当apache重启时,php后台进程被杀死

时间:2013-04-03 15:03:27

标签: php apache process background kill

我遇到了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脚本)

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

如果你想要的只是重新读取配置文件,你应该使用/etc/init.d/apachectl reload

答案 1 :(得分:1)

/etc/init.d/apachectl reload

这不会stop服务,但保持运行并刷新进程配置。

答案 2 :(得分:0)

如果你不想杀死这个过程,请使用/etc/init.d/apachectl reload

答案 3 :(得分:0)

由于apache restart发送SIGTERM,而不是SIGHUP, 你应该从foo.sh

处理SIGTERM