在后台运行php脚本,永远不会死linux

I have a php script that use Mosquitto client. I am using putty SSH to access to the server. I want to run the php script in background continously even when I disconnect from putty. I have tried screen and nohup but it stop when closing putty window

Thank you

展开翻译

译文

我有一个使用Mosquitto客户端的php脚本。 我使用putty SSH访问服务器。 我想连续在后台运行php脚本,即使我从putty断开连接。 我已经尝试了屏幕和nohup,但是在关闭putty窗口时停止了</ p>

谢谢</ p>
</ div>

doudao9915
doudao9915 你听说过cron这个名字吗?
2 年多之前 回复

2个回答

A simple solution is

nohup php script.php &

So you run script in background and disconnect the process from the terminal. If it doesn't help, try disown command after it. There is a good answer with detailed explanation of differences between these commands.

To get full control of your script, a good choice would be a System V init script. There is a template at https://github.com/fhd/init-script-template, which you can use.

Copy template to /etc/init.d directory and rename it. In template you need to change variables:

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

Doing that you will be able to control your script by

/etc/init.d/your_script start
/etc/init.d/your_script stop

Make sure you have permissions to write in /var/log/ and /var/run/, or run script as sudo(leave user="" empty)

展开翻译

译文



一个简单的解决方案是</ p>

  nohup php script.php&amp; 
< / code> </ pre>

因此,您在后台运行脚本并断开进程与终端的连接。 如果没有用,请在其后尝试 disown </ code>命令。 有一个有关这些命令之间差异的详细说明的良好答案。</ p>

要完全控制脚本,一个很好的选择是 System V </ code> init脚本。 https://github.com/fhd/init-script-template</上有一个模板 a>,你可以使用。 </ p>

将模板复制到 /etc/init.d </ code>目录并重命名。 在模板中,您需要更改变量:</ p>

  dir =“/ your / working / directory”
ndd =“nohup php script.php”
user =“your your user”\ n </ code> </ pre>

这样做可以通过</ p>

  /etc/init.d/your_script start来控制脚本 
/ etc / init.d / your_script stop
</ code> </ pre>

确保您有权使用 / var / log / </ code>和< 代码> / var / run / </ code>,或以 sudo </ code>运行脚本(保留 user =“”</ code>为空)</ p>
</ div>

doucao1888
doucao1888 我已经使用标准的UNIX机制添加了一个控制脚本的解决方案
2 年多之前 回复
drex88669
drex88669 谢谢,我找到了。 它与您的解决方案相同。 现在如何停止这个过程? 我使用了ps -ef | grep nohup,但PID总是会改变的问题所以每当我试图杀死它时,它都说PID不存在
2 年多之前 回复

Using screen is a much better solution than nohup.

screen let's you name sessions and rejoin them later so you don't need to resort to using ps to find your backgrounded applications

You can start a named screen session like this

screen -S [session name]

Which you can detach from with ctrl-a,d then reattach with

screen -r [session name]

You can also start a session with a command in the background with

screen -dmS [session name] [command]

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

展开翻译

译文



使用 screen </ code>是比nohup更好的解决方案。</ p>

screen让你命名会话并稍后重新加入它们,这样你就不需要使用ps来找到你的后台应用程序了</ p>

你可以启动一个命名的 screen </ code> session 喜欢这个</ p>

  screen -S [session name] 
</ code> </ pre>

你可以用 ctrl分离 </ kbd> - a </ kbd>, d </ kbd>然后重新附加</ p>

  screen -r [session name] 
</ code> </ pre>

您也可以使用</ p>

 屏幕-dmS [会话名称] [命令]在后台使用命令启动会话 
</ code> </ pre>

https ://www.gnu.org/software/screen/manual/screen.html </ p>
</ div>

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问