我有一个网页,它应该在后台运行php进程作业。 此外,它应该能够识别每个进程以便以后关闭它。防爆。 Worker1,Worker2 ...... 这是如何实现的?还有如何杀死程序? 操作系统是ubuntu。 *这些脚本总是在后台运行,所以它们不会被自己杀死。
答案 0 :(得分:2)
您可以在开头使用nohup
并在命令末尾使用&
符号将脚本和其他shell任务放在后台:
~$ nohup php script.php >> /var/tmp/script.log 2>&1 &
请注意,使用选项2>&1
可将输出(标准错误和输出)重定向到标准输出,然后重定向到用于记录的文件(此处为/var/tmp/script.log
)。
编辑:
使用命令jobs
,您可以列出您在会话中处于活动状态的流程(此处1797
是流程pid):
~$ jobs -l
[1]+ 1797 Running nohup php script.php >> /var/tmp/script.log 2>&1 &
您可以在发现进程pid后向进程发送信号。
好好地杀死""一个进程(其中${PID}
是进程pid):
~$ kill -SIGTERM ${PID}
如果进程卡住,您可以使用信号SIGKILL
(或-9
)。请注意,SIGKILL
无法被拦截,然后该过程立即结束,没有任何"清洁"操作(关闭临时文件等)。 kill -9 ${PID}
或kill -SIGKILL ${PID}
应仅用作最后一个资源。
这里有一些理论:
关于Gnu / Linux的好课程: