终端关闭后几分钟,nohup进程停止运行

时间:2019-07-12 10:22:45

标签: php ssh server nohup

即使注销后,我也希望程序(用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? 顺便说一句,我正在使用共享远程主机,这可能是由于某些服务器设置所致,但是很奇怪,因为它在终端打开时可以正常工作。

2 个答案:

答案 0 :(得分:1)

您可以在disown命令之后立即尝试使用nohup

如果仍然无法使用,请考虑改用screen。这是一个有用的实用程序,即使注销后也可以运行“虚拟终端”。

  1. 使用screen -dmS someName创建一个屏幕。 (例如screen -dmS myPhpScript
  2. 使用screen -r进入屏幕,您的窗口将被清除。
  3. 执行命令(php -f index.php,否&!)
  4. 通过执行[Ctrl] + [A](似乎什么也不做),然后按[D]退出屏幕。屏幕将停留在背景中。您将返回前一个提示(仅在步骤2之前),并显示一条消息,指示[detached from XXXXX.someName]
  5. 您可以使用screen -rscreen -x someName返回屏幕。

答案 1 :(得分:0)

原来是服务器问题。 A2hosting不允许进程在其共享主机的后台运行。因此,该过程将在注销后的某个时间(不是立即)终止。