如何通过SSH运行PHP脚本并在退出后让它继续运行

4

我正在尝试重启一个自定义的IRC机器人。我尝试了各种命令:

load.php  
daemon load.php  
daemon load.php &&  

但这会使脚本在控制台内运行(我能看到所有输出),而且当我退出时,机器人也会退出。
机器人的作者只教了我IRC命令,所以我有点迷茫。
3个回答

8

您可以安装一个名为screen的软件包。然后,运行screen -dm php load.php并使用screen -dR恢复。

这将允许您在后台运行脚本,并仍然能够使用当前的SSH终端。您也可以注销,进程仍将继续运行。


有没有人知道在输入 screen -dR 后将它发送回后台的命令? - adrianTNT

1

很有可能当您注销时,shell会向所有正在运行的子进程发送HUP信号,表示“线路已挂断”(这是普通电话系统调制解调器参考,当断开连接时,线路被“挂断”。您知道,因为您将手柄“挂”在钩子上...)

HUP信号将要求所有程序方便地退出。

试试这个:

nohup load.php &

nohup 命令要求下一个执行的程序 忽略 HUP 信号。有关详细信息,请参见 signal(7)nohup(1) 手册页。 & 命令要求 shell 在后台执行程序。

Clay's answer of using screen(1) 非常棒,一定要了解 screen(1)tmux(1),但我认为它们对于这个问题并不必要。


nohug 可以工作,但是当我尝试私信它时,机器人就会退出。肯定有些东西我没注意到,只能等作者在圣诞节后回来了 :-( - WaterBearer
也许机器人总是期望有一个终端。你可以尝试Clay的建议,使用screen来查看在私信时是否仍然保持在线。 - sarnold

0

这行代码可能会对你有所帮助

php load.php &

我执行了 nohup php load.php & 命令,但是当我私信机器人时它就退出了,我不知道还应该运行哪个文件 :-\ - WaterBearer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接