如何在后台已经 运行 的进程上使用 nohup
How to use nohup on a process already running in background
所以我在我的 unix 终端的后台有一份工作 运行,我将不得不在一段时间后关闭 ssh 终端,然后我的工作也必须继续。我如何使用 nohup 或任何其他可能的选项来实现此目的。
nohup
开始一个新进程。您不能将其追溯应用到您已经开始的流程。
但是,如果您从中启动作业的 shell 是 bash
、ksh
或 zsh
,则 disown
作业控制内置可以提供你想要的。它可以将作业完全从作业控制中删除,或者只是将作业标记为在父 shell 本身收到作业时不发送 SIGHUP
。这与通过 nohup
命令启动进程的效果类似,但不一定相同。
请注意,如果任何标准流连接到会话的终端,您的作业可能仍然存在问题。这是 nohup
通常先发制人地破坏的东西,但 disown
不能在事后修改。通常情况下,您最好预料到这种需求并从 nohup
开始这个过程,但如果您没有那么有远见,那么 disown
可能是您的下一个最佳选择。
另请注意,作为作业控制命令,disown
采用作业规范来标识要操作的作业,而不是进程 ID。如有必要,您可以使用 jobs
内置函数来帮助确定合适的作业规范。
所以我在我的 unix 终端的后台有一份工作 运行,我将不得不在一段时间后关闭 ssh 终端,然后我的工作也必须继续。我如何使用 nohup 或任何其他可能的选项来实现此目的。
nohup
开始一个新进程。您不能将其追溯应用到您已经开始的流程。
但是,如果您从中启动作业的 shell 是 bash
、ksh
或 zsh
,则 disown
作业控制内置可以提供你想要的。它可以将作业完全从作业控制中删除,或者只是将作业标记为在父 shell 本身收到作业时不发送 SIGHUP
。这与通过 nohup
命令启动进程的效果类似,但不一定相同。
请注意,如果任何标准流连接到会话的终端,您的作业可能仍然存在问题。这是 nohup
通常先发制人地破坏的东西,但 disown
不能在事后修改。通常情况下,您最好预料到这种需求并从 nohup
开始这个过程,但如果您没有那么有远见,那么 disown
可能是您的下一个最佳选择。
另请注意,作为作业控制命令,disown
采用作业规范来标识要操作的作业,而不是进程 ID。如有必要,您可以使用 jobs
内置函数来帮助确定合适的作业规范。