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

nohup process stops running a few minutes after terminal closed

我想要一个程序(用 php 编写)到 运行 在远程服务器上,即使在我注销后也是如此。程序很简单,除了sleep 10s什么都不做(只是为了测试),如下:

function index() 
{
    while(true)
    {
        sleep(10);
    }
}

所以我通过 SSH 连接到远程服务器。然后像这样启动程序:

  nohup php -f index.php &

我希望它在我注销后 运行 在服务器的后台运行。但是我发现每次关闭终端后程序只能 运行 大约 10 分钟然后停止,尽管它不会在终端关闭后立即停止。如果我不关闭终端,它可以永远保持 运行ning(正如预期的那样)。谁能告诉我是什么原因?以及如何解决问题?我也尝试过使用 "disown" 中建议的 post 但遇到了同样的问题:How to make a programme continue to run after log out from ssh? 顺便说一句,我使用的是共享远程主机,所以这可能是由于某些服务器设置造成的,但这很奇怪,因为它在终端打开的情况下工作正常。

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

如果还是不行,考虑改用screen。这是一个有用的实用程序,允许 "virtual terminals" 到 运行,即使在注销后也是如此。

  1. 使用 screen -dmS someName 创建屏幕。 (例如 screen -dmS myPhpScript
  2. 使用 screen -r 进入您的屏幕,您的 window 将被清除。
  3. 执行你的命令(php -f index.php,不&!)
  4. 退出屏幕,方法是按 [Ctrl]+[A](似乎什么也没做),然后按 [D]。屏幕将留在后台。您将返回到上一个提示(就在第 2 步之前),并显示一条指示 [detached from XXXXX.someName].
  5. 的消息
  6. 您可以使用 screen -rscreen -x someName 返回屏幕。

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