【发布时间】:2017-04-13 06:17:26
【问题描述】:
我有一个使用 Mosquitto 客户端的 php 脚本。我正在使用 putty SSH 访问服务器。即使我与腻子断开连接,我也想在后台连续运行 php 脚本。我已经尝试过 screen 和 nohup 但是在关闭 putty 窗口时它会停止
谢谢
【问题讨论】:
-
你听说过cron这个名字吗?
我有一个使用 Mosquitto 客户端的 php 脚本。我正在使用 putty SSH 访问服务器。即使我与腻子断开连接,我也想在后台连续运行 php 脚本。我已经尝试过 screen 和 nohup 但是在关闭 putty 窗口时它会停止
谢谢
【问题讨论】:
一个简单的解决方案是
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="" 留空)
【讨论】:
使用screen 是比 nohup 更好的解决方案。
screen 让您可以命名会话并稍后重新加入,这样您就无需使用 ps 来查找后台应用程序
您可以像这样启动一个名为screen 的会话
screen -S [session name]
你可以用 ctrl-a,d 分离,然后用
重新连接screen -r [session name]
您也可以在后台使用命令启动会话
screen -dmS [session name] [command]
【讨论】: