如何让程序在ssh退出后继续运行? [重复]

问题描述 投票:0回答:6

可能重复:
防止后台进程在关闭 SSH 客户端后停止

我有一个需要很长时间才能完成的程序。 它以 root 身份通过 ssh 运行。
我希望它在注销后继续运行,这可能吗?我将如何实现这一点?

linux bash ssh
6个回答
411
投票

假设你有一个程序在前台运行,按 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
命令;这将恢复程序在后台的运行,并显示一条消息来确认。

您现在可以注销,它将继续运行..


106
投票

您应该尝试使用

nohup
并在后台运行它:

nohup sleep 3600 &

44
投票

我会尝试该程序screen


19
投票

在后台启动:

./long_running_process options &

并在退出之前否认该工作:

disown


3
投票

您可以使用

screen
,分离并重新连接

© www.soinside.com 2019 - 2024. All rights reserved.