【问题标题】:run php script in background and never die linux在后台运行php脚本,永远不会死linux
【发布时间】:2017-04-13 06:17:26
【问题描述】:

我有一个使用 Mosquitto 客户端的 php 脚本。我正在使用 putty SSH 访问服务器。即使我与腻子断开连接,我也想在后台连续运行 php 脚本。我已经尝试过 screen 和 nohup 但是在关闭 putty 窗口时它会停止

谢谢

【问题讨论】:

  • 你听说过cron这个名字吗?

标签: php linux process mqtt


【解决方案1】:

一个简单的解决方案是

nohup php script.php &

因此,您在后台运行脚本并断开进程与终端的连接。如果它没有帮助,请在它之后尝试disown 命令。这些命令之间存在good answer with detailed explanation 的差异。

要完全控制您的脚本,一个不错的选择是System V init 脚本。 https://github.com/fhd/init-script-template 有一个模板,您可以使用它。

将模板复制到/etc/init.d 目录并重命名。在模板中你需要改变变量:

dir="/your/working/directory"
cmd="nohup php script.php"
user="your user"

这样做您将能够通过

控制您的脚本
/etc/init.d/your_script start
/etc/init.d/your_script stop

确保您有权写入/var/log//var/run/,或以sudo 运行脚本(将user="" 留空)

【讨论】:

  • 谢谢我找到了。它与您的解决方案相同。现在如何停止这个过程?我使用 ps -ef |grep nohup 但问题是 PID 总是改变,所以每次我试图杀死它时,它说 PID 不存在
  • @user3921905,我添加了一个使用标准 UNIX 机制控制脚本的解决方案
【解决方案2】:

使用screen 是比 nohup 更好的解决方案。

screen 让您可以命名会话并稍后重新加入,这样您就无需使用 ps 来查找后台应用程序

您可以像这样启动一个名为screen 的会话

screen -S [session name]

你可以用 ctrl-a,d 分离,然后用

重新连接
screen -r [session name]

您也可以在后台使用命令启动会话

screen -dmS [session name] [command]

https://www.gnu.org/software/screen/manual/screen.html

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多