【问题标题】:How to run multiple php scripts in background on ubuntu?如何在 ubuntu 的后台运行多个 php 脚本?
【发布时间】:2015-09-25 14:28:19
【问题描述】:

我有一个网页,它应该在后台作为 php 进程运行一些作业。 此外,它应该能够识别每个进程以稍后关闭它。前任。工人1,工人2... 这是如何实现的?还怎么杀死进程? 操作系统是 ubuntu。 *这些脚本总是在后台运行,所以它们不会被自己杀死。

【问题讨论】:

  • 欢迎来到 Stack Overflow,@Soheil Yahyaee。我知道这可能不是您想看到的,但在这里我们想先看看您尝试过什么,然后我们可以介入并帮助您。自己尝试一下,发布一些代码并告诉我们您遇到的问题。
  • 到目前为止你尝试过什么?你被困在哪里了?为什么不像其他脚本一样运行它们?

标签: php linux ubuntu


【解决方案1】:

您可以在后台使用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 系统管理员的一些课程:

【讨论】:

  • 应该运行多个 script.php 实例,并且每个实例都有一个用户名。以后怎么杀?
  • 对“2>&1”部分有帮助吗?它有什么作用?
  • 使用2>&1 可以重定向标准输出上的标准错误。答案已修改。关于重定向的链接:tldp.org/LDP/abs/html/io-redirection.html
  • 在向进程发送信号时要小心:您可以将它们置于不稳定状态。
猜你喜欢
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多