如何使程序在从ssh注销后继续运行?

41 浏览
0 Comments

如何使程序在从ssh注销后继续运行?

可能是重复问题:

在关闭SSH客户端后阻止后台进程停止

我有一个需要很长时间才能完成的程序。

它在SSH上以root身份运行。

我希望在我注销后它能继续运行,这是否可能,我该如何实现?

0
0 Comments

如何使程序在退出ssh登录后继续运行?

假设您有一个在前台运行的程序,按下ctrl-Z,然后:

[1]+ Stopped myprogram

$ disown -h %1

$ bg 1

[1]+ myprogram &;

$ logout

如果只有一个作业,那么您不需要指定作业号。只需使用disown -h和bg命令。

上述步骤的解释:

您按下ctrl-Z。系统暂停正在运行的程序,显示一个作业号和一个“已停止”消息,并返回到bash提示符。

您键入disown -h%1命令(这里,我使用了1,但您将使用在“已停止”消息中显示的作业号),该命令标记该作业,使其忽略SIGHUP信号(不会因为退出登录而停止)。

接下来,使用相同的作业号键入bg命令;这将在后台恢复程序的运行,并显示一条确认消息。

现在,您可以注销并且程序将继续运行。

请问您能否解释一下每个步骤之后到底发生了什么?

您按下ctrl-Z。系统暂停正在运行的程序,显示一个作业号和一个“已停止”消息,并返回到bash提示符。您键入“disown -h%1”命令(这里,我使用了“1”,但您将使用在“已停止”消息中显示的作业号),该命令标记该作业,使其忽略SIGHUP信号(不会因为退出登录而停止)。接下来,使用相同的作业号键入“bg”命令。这将在后台恢复程序的运行,并显示一条确认消息。现在,您可以注销并且程序将继续运行。

...您应该知道,当您使用“bg”命令时,结果与使用“&”将程序在后台运行是相同的。它不会有任何输出到标准输出,因此应该将输出写入文件(如果您没有自己重定向,nohup将将标准输出重定向到nohup.out或~/nohup.out)。

我测试了一下,但不起作用,当我注销时退出了...

我尝试对已在后台运行的作业使用disown。它起作用了。但是当运行“jobs”命令时,这些作业不再列出。那么现在我该如何找到它们呢?

您应该能够通过ps x命令看到它们。

谢谢提示。例如,我使用ps ax | grep tar来查看tar命令。如果已知pid,也可以使用grep。

在我的情况下,只有按照这个顺序才有效:1.启动程序 2. CTR-Z 3. bg 4. disown 5. 使用`jobs`进行验证

这对我不起作用。在我退出登录后,程序从未成功完成。

这对我不起作用。发现当您退出时,输出流会停止,因此您的进程也会停止,即使您使用disown。您可以重定向,例如foo &>/dev/null &; disown %1,但请注意重定向缓冲区随时间变大。关于这个问题有解决方案在这里。

顺便说一下,如果您以任何方式需要将程序切换回“前台”运行,只需使用fg命令。

0
0 Comments

问题的原因:希望在通过SSH登出后,程序仍然能够继续运行。

解决方法:使用screen或nohup命令来实现。

screen是一个功能强大的工具,当需要程序交互并且在以后能够返回应用程序时,可以使用它。即使对于非交互式任务,使用screen也是一个好习惯,因为这样可以在断开连接时查看程序是否已完成而无错误。另一个选择是使用tmux。

nohup命令更适合这个任务。它可以使程序在后台运行,并且不会受到SSH登出的影响。可以使用以下命令:

nohup command &

这个回答中的链接已经失效,建议不要使用只有链接的回答。可以通过扩展回答并提供关于如何使用screen的简短示例来解决这个问题。

要使程序在SSH登出后继续运行,可以使用screen或nohup命令。使用screen可以实现程序的交互和后续返回,而nohup命令可以使程序在后台运行,不受SSH登出影响。

0
0 Comments

在使用SSH登录后如何使程序在注销后继续运行?这个问题的原因是在注销SSH会话后,程序会停止运行。解决方法是使用nohup命令将程序放入后台运行。具体步骤如下:

1. 使用以下命令将程序放入后台运行:

nohup <你的程序> &

2. 默认情况下,nohup会将程序的输出重定向到当前目录下的nohup.out文件中。

3. 如果想要将程序重新调回前台运行,可以使用tmux或者screen命令。

4. 使用以下命令可以查看程序的实时输出:

tail -f nohup.out

5. 如果需要重新启动程序,可以使用以下命令杀死程序的进程:

kill <进程PID>

推荐使用tmux来解决该问题,具体使用方法可以参考hamvocke.com/blog/a-quick-and-easy-guide-to-tmux。对于某些情况下nohup命令无效的情况,使用tmux可以解决该问题。

通过以上方法,你可以在注销SSH会话后仍然保持程序的运行,并且可以实时查看程序的输出,以及重新启动程序。

0