如何通过 SSH 运行 PHP 脚本并在我退出后保持运行

Posted

技术标签:

【中文标题】如何通过 SSH 运行 PHP 脚本并在我退出后保持运行【英文标题】:How to run a PHP script via SSH and keep it running after I quit 【发布时间】:2012-01-27 03:44:28 【问题描述】:

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

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

但这会使脚本在控制台内执行(我看到所有输出),并且当我退出机器人时也会退出。

机器人作者只教了我 IRC 命令,所以我有点迷茫。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我输入screen -dR后,任何人都知道将其发送回后台的命令吗?【参考方案2】:

当您注销时,shell 很有可能会向其所有正在运行的子进程发送 HUP 信号以指示“线路已挂起”(plain old telephone system modem 引用线路正在“挂起”时断开连接。你知道,因为你将听筒“挂”在挂钩上......)

HUP 信号会方便地要求所有程序终止。

试试这个:

nohup load.php &

nohup 要求执行下一个程序以忽略HUP 信号。有关详细信息,请参阅 signal(7)nohup(1) 联机帮助页。 & 要求 shell 在后台执行程序。

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

【讨论】:

nohug 有效,但在我尝试 PM 后机器人退出。一定有什么我错过了,得等作者圣诞节后回来:-( 也许机器人希望总是有一个终端。试试 Clay 的 screen 推荐,看看当你 PM 时机器人是否还活着。【参考方案3】:

这条线可能对你有帮助

php load.php &

【讨论】:

我做了 nohup php load.php & 但是当我 PM 时机器人退出了,我看不到我应该运行什么其他文件:-\

以上是关于如何通过 SSH 运行 PHP 脚本并在我退出后保持运行的主要内容,如果未能解决你的问题,请参考以下文章

如何从 bash 脚本中 ssh?

即使在我注销 SSH 后,如何在后台运行 Python 脚本?

如何在关闭ssh连接的情况下,让程序继续运行?

使用 PHP 和 Windows 任务计划程序在退出时重试(1)

通过命令行执行用 ZendGuard 编码的 PHP 脚本

如何在 GPU 上启用 php 运行 python 脚本? [关闭]