我如何放置已经

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

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


使用bash的作业控制将进程发送到后台:

  • 按Ctrl + Z停止(暂停)程序并返回到shell。
  • bg在后台运行它。
  • disown -h [job-spec]其中[job-spec]是作业编号(如第一个运行作业的%1 ;使用jobs命令查找您的编号),以便在终端关闭时不会终止作业。

  • 假设由于某种原因,Ctrl + Z也不起作用,转到另一个终端,找到进程ID(使用ps )并运行:

    kill -20 PID 
    kill -18 PID
    

    kill -20SIGTSTP )将暂停进程并kill -18SIGCONT )将在后台恢复进程。 所以现在,关闭你的终端并不会阻止你的进程。


    命令到正在运行的作业从壳中分离(=使得它的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

    上一篇: How do I put an already

    下一篇: write a shell script to ssh to a remote machine and execute commands