我遇到了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脚本)
非常感谢任何帮助。
答案 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