Bash 脚本 - nohup,但然后让进程继续运行?
我有一个 PHP 脚本,通过带有 nohup 的 system() 运行一堆命令来执行 bash 脚本。
调用 sh 的命令行如下所示:-
system('nohup /home/me/script.sh %s %d %d 2>&1 > %s');
我希望 .sh 脚本设置为运行,然后离开它并返回到我的继续我的 PHP 脚本。然而,正在发生的事情是,它正在启动,然后在继续之前等待获得响应/完成。
我怎样才能让它运行然后“挂断”或离开它?
I've got a PHP script running a bunch of commands to execute bash scripts, via system() with nohup.
The command line to call sh looks like:-
system('nohup /home/me/script.sh %s %d %d 2>&1 > %s');
I want the .sh script to be set running, and then leave it and return to my continue my PHP script. However, what is happening, is it's being started and then holding to get a response/complete before proceeding.
How can I set it running and then 'hang up' or leave it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需在末尾添加一个 & 符号
&
即可,如下所示:这将在单独的子进程中执行 shell 脚本并立即返回到 php。
Just append an ampersand
&
in the end like this:This will execute the shell script in a separate sub process and return immediately to php.
如果您打算在退出 PHP 后运行此 shell 脚本,那么建议使用 setsid 在新会话中运行程序。看看 http://php.net/manual/en/function.posix-setsid .php 例如或使用setsid程序
If you intend to run this shell script after you exit PHP then it is suggested to run program in a new session using setsid. Look at http://php.net/manual/en/function.posix-setsid.php for example or use setsid program