Как запустить скрипт PHP через SSH и сохранить его работающим после выхода - PullRequest
3 голосов
/ 24 декабря 2011

Я пытаюсь перезапустить пользовательский бот IRC. Я пробовал различные команды:

load.php  
daemon load.php  
daemon load.php &&  

Но это заставляет скрипт выполняться внутри консоли (я вижу все результаты), и когда я завершаю работу, бот также завершает работу.

Автор бота научил меня только командам IRC, поэтому я немного растерялся.

Ответы [ 3 ]

8 голосов
/ 24 декабря 2011

Вы можете установить пакет с именем screen. Затем запустите screen -dm php load.php и продолжите с screen -dR

Это позволит вам запускать сценарий в фоновом режиме и по-прежнему иметь возможность использовать ваш текущий терминал SSH. Вы также можете выйти из системы, и процесс все равно будет запущен.

1 голос
/ 24 декабря 2011

Скорее всего, оболочка отправляет сигнал HUP всем своим работающим дочерним элементам, когда вы выходите из системы, чтобы указать, что "линия была прервана" ( обычный старый модем телефонной системы ссылка линия "зависает" при отключении. Знаете, потому что вы "вешаете" трубку на крючок ...)

Сигнал HUP попросит все программы умереть удобно.

Попробуйте это:

nohup load.php &

nohup запрашивает следующую выполняемую программу, чтобы игнорировать сигнал HUP. См. signal(7) и справочные страницы nohup(1) для подробностей. & просит оболочку выполнить программу в фоновом режиме.

Ответ Клэя об использовании screen(1) довольно удивительный, определенно посмотрите на screen(1) или tmux(1), но я не думаю, что они необходимы для этой проблемы.

0 голосов
/ 24 декабря 2011

Эта строка может вам помочь

php load.php &
...