1

我的问题与发布的问题非常相似:如何将已经运行的进程置于 nohup 下?

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

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

现在我按 Ctrl+Z 暂停“foo.sh”。它列在我的“工作 -l”中。

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

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

4

1 回答 1

1

用于ps获取 PIDbar.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 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
于 2012-11-28T20:04:46.160 回答