【发布时间】:2013-04-03 15:03:26
【问题描述】:
我对 apache 和 php 有疑问。
我在 php 中调用这个脚本:
exec("nohup sudo QUIET=y sh foo.sh > /home/tmp/log.txt 2>&1 & echo $!", $res);
不久之后,脚本 foo.sh 需要重新启动 apache 以包含新的配置文件:
/etc/init.d/apachectl restart
在命令行中,它工作正常,但在我的 php 脚本中,进程在 apache 重新启动的同时被杀死。为什么?我以为 nohup 分离了它的父进程。
(我指出我无法更改 sh 脚本)
任何帮助将不胜感激。
【问题讨论】:
-
改用
/etc/init.d/apachectl reload? -
nohup 不会将其与其父级分离,它只是防止它在终端会话结束时被关闭(挂断,“hup”)
-
我无法更改 sh 脚本(它属于公司),对不起:/
-
Apache 的信号支持及其反应方式记录在这里:httpd.apache.org/docs/2.2/stopping.html。 HUP 会杀死所有子节点,但不会重新启动原始父节点。
-
如果 nohup 不脱离其父级,你会知道另一个命令吗?
标签: php apache process background kill