因此,我的unix终端上有一个正在Background中运行的作业,一段时间后,我将不得不关闭ssh终端,在那之后我的工作也必须继续。如何使用nohup或任何其他可能的选项来实现此目的。
nohup
开始新的过程。您不能将其追溯应用到已经启动的进程中。
但是,如果您从中启动作业的shell是bash
,ksh
或zsh
,则disown
作业控件内置可以提供所需的内容。它可以将作业完全从作业控制中删除,也可以仅在父外壳本身收到作业时将其标记为不发送SIGHUP
。这与通过nohup
命令启动进程的效果类似,但不一定相同。
[请注意,如果作业的任何标准流都连接到会话的终端,您的作业仍可能会出现问题。这通常是nohup
抢先的东西,但是disown
在此之后不能进行修改。通常,最好是预料到这种需求并以nohup
开始该过程,但是如果您没有那么有远见,那么disown
可能是您的下一个最佳选择。
也请注意,作为作业控制命令,disown
采用作业规范来标识要操作的作业,而不是进程ID。如有必要,可以使用内置的jobs
帮助确定适当的作业规范。