У меня есть короткий служебный скрипт php, я запускаю его из cli просто с помощью:
php myscript.php
Скрипт работает постоянно, периодически выполняя какие-то задачи (не относящиеся к вопросу). Он не требует никакого ввода от пользователя. После запуска я обычно нажимаю CTRL+z, а затем запускаю bg
, чтобы перевести процесс в фоновый режим, и все в порядке.
Если я запускаю его как:
php myscript.php &
скрипт запускается в фоновом режиме при запуске, но также и в остановленном состоянии. Пример:
[1] 11513
[1]+ Stopped php myscript.php
даже запуск bg
в этот момент не помогает, мне нужно запустить fg
, затем CTRL+z и снова bg
, чтобы все заработало.
Это php-скрипт:
<?
while(true){
echo 'hi '.time()."\n";
sleep(30);
}
?>
Моя проблема в том, что я не могу запустить его прямо в фоновом режиме, потому что система останавливает его, и я не понимаю, почему. Как я могу это исправить?
обновление:
Я сделал bash-версию того же скрипта, и его можно запустить и перевести в фоновый режим (работает и не останавливать), просто запустив его с & в конце (script.sh &
)
скрипт.ш:
#!/bin/bash
while true; do
echo `date`
sleep 30
done
Почему php-скрипт останавливается после запуска в фоновом режиме, а bash-скрипт - нет? Что может быть причиной такого другого поведения?