Bash Scripting - nohup, но затем оставить процесс запущенным - PullRequest
1 голос
/ 14 ноября 2011

У меня есть PHP-скрипт, выполняющий кучу команд для выполнения bash-скриптов через system () с nohup.

Командная строка для вызова sh выглядит так: -

system('nohup /home/me/script.sh %s %d %d 2>&1 > %s');

Я хочу, чтобы скрипт .sh был запущен, а затем оставил его и вернулся к продолжению моего сценария PHP. Однако, что происходит, это то, что он запускается и затем удерживается, чтобы получить ответ / завершить, прежде чем продолжить.

Как я могу запустить его, а затем "повесить трубку" или оставить его?

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Просто добавьте амперсанд & в конце, например, так:

system('nohup /home/me/script.sh %s %d %d 2>&1 > %s &');

Это выполнит скрипт оболочки в отдельном подпроцессе и немедленно вернется к php.

0 голосов
/ 14 ноября 2011

Если вы собираетесь запустить этот скрипт оболочки после выхода из PHP, то рекомендуется запустить программу в новом сеансе, используя setsid . Например, посмотрите http://php.net/manual/en/function.posix-setsid.php или используйте программу setsid

...