猿问

如何将已经运行的进程置于nohup下?

我有一个已经运行很长时间的进程,不想结束它。

如何将其置于nohup下(即,即使关闭终端,如何使它继续运行?)


倚天杖
浏览 1148回答 3
3回答

月关宝盒

使用bash 的作业控制将流程发送到后台:Ctrl+ Z停止(暂停)程序并返回外壳。bg 在后台运行它。disown -h [job-spec]其中[job-spec]是作业编号(例如%1第一个正在运行的作业;请使用jobs命令查找您的编号),以便在终端关闭时不会终止该作业。

隔江千里

假设由于某种原因Ctrl+ Z也无法正常工作,请转到另一个终端,找到进程ID(使用ps)并运行:kill -SIGSTOP PID kill -SIGCONT PIDSIGSTOP将暂停该过程并SIGCONT在后台继续该过程。因此,现在关闭两个终端都不会停止您的过程。

繁星coding

从外壳程序中分离正在运行的作业的命令(=使之成为nohup)是disown一个基本的外壳程序命令。从bash-manpage(man bash):放弃[-ar] [-h] [jobspec ...]如果没有选项,则会从活动作业表中删除每个作业规范。如果指定了-h选项,则不会从表中删除每个作业规范,而是将其标记为如果外壳程序收到SIGHUP则不会将SIGHUP发送给作业。如果不存在jobspec,并且-a和-r选项均未提供,则使用当前作业。如果未提供jobspec,则-a选项表示删除或标记所有作业;不带jobspec参数的-r选项将操作限制为正在运行的作业。除非jobspec没有指定有效的作业,否则返回值为0。这意味着,一个简单的disown -a将从作业表中删除所有作业,并使它们不再工作
随时随地看视频慕课网APP
我要回答