我如何放置已经
我有一个已经运行了很长时间的进程,不想结束它。
我该如何将它置于nohup之下(即,即使关闭终端,我如何使它继续运行?)
使用bash的作业控制将进程发送到后台:
bg
在后台运行它。 disown -h [job-spec]
其中[job-spec]是作业编号(如第一个运行作业的%1
;使用jobs
命令查找您的编号),以便在终端关闭时不会终止作业。 假设由于某种原因,Ctrl + Z也不起作用,转到另一个终端,找到进程ID(使用ps
)并运行:
kill -20 PID
kill -18 PID
kill -20
( SIGTSTP
)将暂停进程并kill -18
( SIGCONT
)将在后台恢复进程。 所以现在,关闭你的终端并不会阻止你的进程。
命令到正在运行的作业从壳中分离(=使得它的nohup)是disown
和碱性壳命令。
从bash manpage(man bash):
disown [-ar] [-h] [jobspec ...]
如果没有选项,每个jobspec将从活动作业表中删除。 如果给出-h选项,则每个jobspec都不会从表中删除,但会被标记,以便在shell收到SIGHUP时不会将SIGHUP发送到作业。 如果没有jobspec存在,并且没有提供-a和-r选项,则使用当前作业。 如果没有提供jobspec,-a选项意味着删除或标记所有作业; 没有jobspec参数的-r选项将操作限制为正在运行的作业。 除非jobspec没有指定有效的作业,否则返回值为0。
这意味着,这是一个简单的
disown -a
将从工作表中删除所有工作,并使他们无法工作
链接地址: http://www.djcxy.com/p/17513.html下一篇: write a shell script to ssh to a remote machine and execute commands