2

x.php:

<?php
sleep(15);
?>

приставка:

$ php x.php &
[1] 5742
[1]+  Stopped                 x.php

Результат: "ОСТАНОВЛЕННЫЙ" процесс - он существует всегда, пока я не отправлю TERM а затем сигнал CONT .

Что мне нужно вместо этого: процесс , чтобы закончить и выйти через 15 секунд, так что я не вижу его в top или htop

Система: Ubuntu 12.04 LTS в VirtualBox; PHP-FPM

1 ответ1

4

Используя strace я вижу, что программа получает сигнал SIGTTOU что означает, что процесс был в фоновом режиме и пытался записать в терминал, или в этом случае изменить один из его режимов.

ioctl(0, SNDCTL_TMR_STOP or SNDRV_TIMER_IOCTL_GINFO or TCSETSW, {B38400 opost isig icanon echo ...}) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGTTOU {si_signo=SIGTTOU, si_code=SI_KERNEL} ---
--- stopped by SIGTTOU ---

Чтобы обойти это, установите вход в null:

$ php x.php < /dev/null &

Вопрос такой же, как этот: PHP-скрипт не будет работать в фоновом режиме

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .