Как запустить скрипт php через командную строку (и сохранить его работающим после выхода из системы) - PullRequest
10 голосов
/ 22 февраля 2009

Я пытаюсь запустить скрипт php на моем удаленном виртуальном частном сервере через командную строку. Процесс, которому я следую, таков:

  1. Войдите на сервер, используя PuTTY
  2. В командной строке введите> php myScript.php

Скрипт работает просто отлично. НО ПРОБЛЕМА в том, что скрипт перестает работать, как только я закрываю окно консоли PuTTY.

Мне нужно, чтобы скрипт продолжал работать бесконечно. Как я могу это сделать? Я запускаю Debian на сервере.

Заранее спасибо.

Ответы [ 3 ]

17 голосов
/ 22 февраля 2009

Я полагаю, что у Бена правильный ответ, а именно используйте команду nohup. nohup означает nohangup и означает, что ваша программа должна игнорировать сигнал зависания, сгенерированный, когда ваш сеанс замазки отключен либо из-за выхода из системы, либо из-за истечения времени ожидания.

Вы должны знать, что выходные данные вашей команды будут добавлены в файл в текущем каталоге с именем nohup.out (или $ HOME / nohup.out, если разрешения не позволяют вам создать nohup.out в текущем каталоге) , Если ваша программа генерирует много выходных данных, этот файл может стать очень большим, или вы можете использовать перенаправление оболочки, чтобы перенаправить вывод сценария в другой файл.

nohup php myscript.php >myscript.output 2>&1 &

Эта команда запустит ваш скрипт и отправит все выходные данные (как стандартные, так и ошибки) в файл myscript.output, который будет создаваться заново при каждом запуске программы.

В финале & скрипт запускается в фоновом режиме, поэтому вы можете выполнять другие действия во время его работы или выхода из системы.

9 голосов
/ 22 февраля 2009

Самый простой способ - запустить его через nohup:

nohup php myScript.php & 
4 голосов
/ 22 февраля 2009

Если вы запустите команду php в <a href="http://www.linuxjournal.com/article/6340" rel="nofollow noreferrer">screen</a>, отсоедините screen, после закрытия консоли она не прекратится.

Экран - это мультиплексор терминала, который позволяет вам управлять многими процессами через один физический терминал. Каждый процесс получает свое собственное виртуальное окно, и вы можете переключаться между виртуальными окнами, взаимодействующими с каждым процессом. Процессы, управляемые экраном, продолжают выполняться, когда их окно не активно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...