如何对已在后台运行的进程使用 nohup

Ash*_*tap 1 unix linux nohup

所以我有一个作业在我的 unix 终端上后台运行,我将不得不在一段时间后关闭 ssh 终端,并且我的作业也必须在那之后继续。我如何使用 nohup 或任何其他可能的选项来实现此目的。

Joh*_*ger 5

nohup开始一个新的进程。您无法将其追溯应用到已经启动的流程。

但是,如果您启动作业的 shell 是bashksh、 或 ,zsh那么内置的disown作业控制可能会提供您想要的内容。SIGHUP它可以将作业从作业控制中完全删除,或者只是在父 shell 本身收到作业时将作业标记为不发送。这与通过命令启动进程的效果类似,但不一定相同nohup

请注意,如果您的作业的任何标准流连接到会话的终端,您的作业可能仍然存在问题。这nohup通常会先发制人,但disown事后无法修改。通常,您最好预测这种需求并从 开始该过程nohup,但如果您没有那么有远见,那么这disown可能是您的下一个最佳选择。

另请注意,作为作业控制命令,disown它采用作业规范来标识要操作的作业,而不是进程 ID。如有必要,您可以使用jobs内置函数来帮助确定适当的工作规范。