首页 文章

如何在nohup下放置已经运行的CHILD进程

提问于
浏览
1

我的问题非常类似于:How do I put an already-running process under nohup?

假设我从命令行执行foo.sh,然后执行另一个shell脚本,依此类推 . 例如:

foo.sh
 \_ bar.sh
    \_ baz.sh

现在我按Ctrl Z暂停“foo.sh” . 它列在我的“jobs -l”中 .

我如何拒绝baz.sh以使它不再是foo.sh的孙子?如果我键入“disown”,那么只有foo.sh与其父级不同,这不是我想要的 . 我想杀死foo.sh和bar.sh进程,只留下baz.sh.

我目前的解决方法是“杀死-18”(简历)baz.sh并继续我的工作,但我更愿意杀死上述过程 . 谢谢 .

1 回答

  • 1

    使用 ps 获取 bar.sh 的PID,并将其删除 .

    imac:barmar $ ps -l -t p0 -ww
      UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S     ADDR TTY           TIME CMD
      501  3041  3037     4006   0  31  0  2435548    760 -      Ss    8c6da80 ttyp0      0:00.74 /bin/bash --noediting -i
      501 68228  3041     4006   0  31  0  2435544    664 -      S     7cbc2a0 ttyp0      0:00.00 /bin/bash ./foo.sh
      501 68231 68228     4006   0  31  0  2435544    660 -      S     c135a80 ttyp0      0:00.00 /bin/bash ./bar.sh
      501 68232 68231     4006   0  31  0  2435544    660 -      S     a64b7e0 ttyp0      0:00.00 /bin/bash ./baz.sh
      501 68233 68232     4006   0  31  0  2426644    312 -      S     f9a1540 ttyp0      0:00.00 sleep 100
        0 68243  3041     4106   0  31  0  2434868    480 -      R+    a20ad20 ttyp0      0:00.00 ps -l -t p0 -ww
    imac:barmar $ kill 68231
    ./foo.sh: line 3: 68231 Terminated              ./bar.sh
    [1]+  Exit 143                ./foo.sh
    imac:barmar $ ps -l -t p0 -ww
      UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S     ADDR TTY           TIME CMD
      501  3041  3037     4006   0  31  0  2435548    760 -      Ss    8c6da80 ttyp0      0:00.74 /bin/bash --noediting -i
      501 68232     1     4006   0  31  0  2435544    660 -      S     a64b7e0 ttyp0      0:00.00 /bin/bash ./baz.sh
      501 68233 68232     4006   0  31  0  2426644    312 -      S     f9a1540 ttyp0      0:00.00 sleep 100
        0 68248  3041     4106   0  31  0  2434868    480 -      R+    82782a0 ttyp0      0:00.00 ps -l -t p0 -ww
    

相关问题