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" 到 运行,即使在注销后也是如此。
- 使用
screen -dmS someName
创建屏幕。 (例如 screen -dmS myPhpScript
)
- 使用
screen -r
进入您的屏幕,您的 window 将被清除。
- 执行你的命令(
php -f index.php
,不&
!)
- 退出屏幕,方法是按 [Ctrl]+[A](似乎什么也没做),然后按 [D]。屏幕将留在后台。您将返回到上一个提示(就在第 2 步之前),并显示一条指示
[detached from XXXXX.someName]
. 的消息
- 您可以使用
screen -r
或 screen -x someName
返回屏幕。
原来是服务器问题。 A2hosting 不允许进程 运行 在后台为其共享主机。因此进程将在注销后的某个时间(不是立即)被杀死。
我想要一个程序(用 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" 到 运行,即使在注销后也是如此。
- 使用
screen -dmS someName
创建屏幕。 (例如screen -dmS myPhpScript
) - 使用
screen -r
进入您的屏幕,您的 window 将被清除。 - 执行你的命令(
php -f index.php
,不&
!) - 退出屏幕,方法是按 [Ctrl]+[A](似乎什么也没做),然后按 [D]。屏幕将留在后台。您将返回到上一个提示(就在第 2 步之前),并显示一条指示
[detached from XXXXX.someName]
. 的消息
- 您可以使用
screen -r
或screen -x someName
返回屏幕。
原来是服务器问题。 A2hosting 不允许进程 运行 在后台为其共享主机。因此进程将在注销后的某个时间(不是立即)被杀死。