【问题标题】:Bash Scripting - nohup, but then leave process running?Bash Scripting - nohup,然后让进程运行?
【发布时间】:2011-11-14 13:30:28
【问题描述】:

我有一个 PHP 脚本运行一堆命令来执行 bash 脚本,通过 system() 和 nohup。

调用 sh 的命令行如下:-

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

我希望 .sh 脚本设置为运行,然后离开它并返回到我的继续我的 PHP 脚本。但是,正在发生的事情是它正在启动,然后在继续之前等待获得响应/完成。

如何设置它运行然后“挂断”或离开它?

【问题讨论】:

    标签: php bash nohup


    【解决方案1】:

    只需像这样在末尾附加一个&符号&

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

    这将在单独的子进程中执行shell脚本并立即返回php。

    【讨论】:

    • 感谢 anubhava,我实际上已经尝试过了。诚然,我过去曾看过这项工作。但是,由于某种原因,它似乎并没有继续前进。它是否取决于与您正在运行的程序有关的任何事情。我在这个脚本中设置 ffmpeg,然后返回设置另一个。
    【解决方案2】:

    如果您打算在退出 PHP 后运行这个 shell 脚本,那么建议使用 setsid 在新会话中运行程序。例如看http://php.net/manual/en/function.posix-setsid.php 或者使用setsid程序

    【讨论】:

    • @waxical 这就是您要寻找的答案吗?
    猜你喜欢
    • 2011-07-14
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2013-12-10
    • 2016-08-16
    • 2020-12-15
    • 1970-01-01
    相关资源
    最近更新 更多