可能重复:
Prevent a background process from being stopped after closing SSH client
我有一个花了很多时间才能完成的程序。 它在ssh上以root身份运行 我希望它在我退出后继续运行,这是否可能,我将如何实现这一目标?
答案 0 :(得分:317)
假设你有一个在前台运行的程序,按ctrl-Z ,然后:
[1]+ Stopped myprogram
$ disown -h %1
$ bg 1
[1]+ myprogram &
$ logout
如果只有一个作业,则无需指定作业编号。只需使用disown -h
和bg
。
按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
,分离并重新附加