首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在终端关闭几分钟后,nohup进程停止运行。

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

Stack Overflow用户
提问于 2019-07-12 10:22:45
回答 2查看 2K关注 0票数 0

我希望一个程序(用php编写)在远程服务器上运行,即使在我注销之后也是如此。这个程序非常简单:它只做10s的睡眠(只是为了测试),如下所示:

代码语言:javascript
运行
复制
function index() 
{
    while(true)
    {
        sleep(10);
    }
}

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

代码语言:javascript
运行
复制
  nohup php -f index.php &

我希望它在我注销后在服务器上的后台运行。但是我发现,每次我关闭终端后,程序只能运行大约10分钟,然后停止,尽管它不会在终端关闭后立即停止。如果我不关闭终端,它可以永远运行(如预期的)。有人能告诉我原因是什么吗?以及如何解决这个问题?我也尝试过使用本文中建议的“注销”,但也遇到了同样的问题:顺便说一句,我使用的是共享远程主机,所以它可能是由于某些服务器设置造成的,但这很奇怪,因为它在打开终端时运行得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-13 10:44:22

您可以在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返回屏幕。
票数 3
EN

Stack Overflow用户

发布于 2019-07-17 00:34:44

结果是服务器问题。A2hosting不允许进程在后台为共享主机运行。因此,在注销后的某一段时间(不是立即),该进程将被终止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57005051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档