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

标签 linux unix nohup

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

最佳答案

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

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

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

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

关于linux - 如何对已在后台运行的进程使用 nohup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58566781/

相关文章:

bash - 使用 nohup 运行 JMeter 脚本

Java - 如何设置我的应用程序始终在主屏幕上运行但不在第二屏幕上运行?

python - 索引错误 : Layer [4] not found

unix - 如何用AWK删除部分重复行?

bash - 在 Unix 中使用 shell 脚本删除超过 10 天的文件

linux - nohup 命令 & : How to discard output?

linux - grep 并替换 2 个文件路径

linux - 如何创建自定义 Oracle Linux 7u2 iso 镜像

Shell 脚本没有给出正确的输出

java - 在后端运行一个java程序