即使注销后,我也希望程序(用php编写)在远程服务器上运行。该程序非常简单:它只休眠10秒钟(仅用于测试),什么都不做,如下所示:
function index()
{
while(true)
{
sleep(10);
}
}
因此,我通过SSH连接到远程服务器。然后像这样启动程序:
nohup php -f index.php &
我希望它在注销后在服务器的后台运行。但是我发现,每次关闭终端后,程序只能运行大约10分钟,然后停止,尽管在关闭终端后并不会立即停止。如果我不关闭终端,它可以永远运行(如预期的那样)。谁能告诉我原因是什么?以及如何解决问题?我也尝试按照本文中的建议使用“ disown”,但遇到了相同的问题:How to make a programme continue to run after log out from ssh? 顺便说一句,我正在使用共享远程主机,这可能是由于某些服务器设置所致,但是很奇怪,因为它在终端打开时可以正常工作。
答案 0 :(得分:1)
您可以在disown
命令之后立即尝试使用nohup
。
如果仍然无法使用,请考虑改用screen
。这是一个有用的实用程序,即使注销后也可以运行“虚拟终端”。
screen -dmS someName
创建一个屏幕。 (例如screen -dmS myPhpScript
)screen -r
进入屏幕,您的窗口将被清除。php -f index.php
,否&
!)[detached from XXXXX.someName]
。screen -r
或screen -x someName
返回屏幕。答案 1 :(得分:0)
原来是服务器问题。 A2hosting不允许进程在其共享主机的后台运行。因此,该过程将在注销后的某个时间(不是立即)终止。