2015-09-25 78 views
1

我有一个网页,它应该在后台运行一些作业作为php进程。 另外,它应该能够识别每个进程以后关闭它。防爆。 Worker1,Worker2 ... 这是如何实现的?还有如何杀死程序? 操作系统是Ubuntu的。 *这些脚本总是在后台运行,所以它们不会被自己杀死。如何在ubuntu的后台运行多个php脚本?

+4

欢迎堆栈溢出,@Soheil Yahyaee。我知道这可能不是你想看到的,但我们希望看到你先试过的东西,然后我们可以跳进来帮助你。尝试一下你的自我,发布一些代码,并告诉我们你卡在哪里。 –

回答

2

你可以在命令年底建成使用nohup开头和&符号脚本,并在后台等外壳任务:

~$ 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(或)。请注意0​​不能被拦截,然后该过程立即结束,没有任何“清理”操作(关闭临时文件等)。 kill -9 ${PID}kill -SIGKILL ${PID}应仅用作最后一个资源。

这里是一些理论:

一个好的过程大约GNU/Linux的:

+0

应该运行script.php的多个实例,并且每个实例都有一个用户名。以后如何杀死他们? –

+0

可能对“2>&1”部分有所帮助?它有什么作用? –

+0

'2>&1'您可以重定向标准输出上的标准错误。答案已修改。有关重定向的链接:http://www.tldp.org/LDP/abs/html/io-redirection.html –