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

时间:2009-06-05 04:48:06

标签: linux bash ssh

  

可能重复:
  Prevent a background process from being stopped after closing SSH client

我有一个花了很多时间才能完成的程序。 它在ssh上以root身份运行 我希望它在我退出后继续运行,这是否可能,我将如何实现这一目标?

6 个答案:

答案 0 :(得分:317)

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

[1]+  Stopped                 myprogram
$ disown -h %1
$ bg 1
[1]+ myprogram &
$ logout

如果只有一个作业,则无需指定作业编号。只需使用disown -hbg

以上步骤的说明:

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

您键入disown -h %1命令(此处,我使用了1,但您使用了Stopped消息中显示的作业编号)来标记作业所以它忽略了SIGHUP信号(它不会通过注销而停止)。

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

您现在可以退出,它将继续运行..

答案 1 :(得分:77)

您应该尝试使用nohup并在后台运行它:

nohup sleep 3600 &

答案 2 :(得分:39)

我会尝试screen程序。

答案 3 :(得分:14)

从后台开始:

./long_running_process options &

在你退出之前拒绝了这份工作:

disown

答案 4 :(得分:13)

答案 5 :(得分:3)

您可以使用screen,分离并重新附加