我希望一个程序(用php编写)在远程服务器上运行,即使在我注销之后也是如此。这个程序非常简单:它只做10s的睡眠(只是为了测试),如下所示:
function index() 
{
    while(true)
    {
        sleep(10);
    }
}所以我通过SSH连接到远程服务器。然后像这样启动程序:
  nohup php -f index.php &我希望它在我注销后在服务器上的后台运行。但是我发现,每次我关闭终端后,程序只能运行大约10分钟,然后停止,尽管它不会在终端关闭后立即停止。如果我不关闭终端,它可以永远运行(如预期的)。有人能告诉我原因是什么吗?以及如何解决这个问题?我也尝试过使用本文中建议的“注销”,但也遇到了同样的问题:顺便说一句,我使用的是共享远程主机,所以它可能是由于某些服务器设置造成的,但这很奇怪,因为它在打开终端时运行得很好。
发布于 2019-07-13 10:44:22
您可以在disown命令之后尝试使用nohup。
如果它仍然不起作用,可以考虑使用screen。它是一个有用的实用工具,允许“虚拟终端”运行,即使在注销之后。
screen -dmS someName创建一个屏幕。(例如screen -dmS myPhpScript)screen -r输入屏幕,您的窗口将被清除。php -f index.php,没有&!)[detached from XXXXX.someName]的消息。screen -r或screen -x someName返回屏幕。发布于 2019-07-17 00:34:44
结果是服务器问题。A2hosting不允许进程在后台为共享主机运行。因此,在注销后的某一段时间(不是立即),该进程将被终止。
https://stackoverflow.com/questions/57005051
复制相似问题