1

私の質問は、「すでに実行中のプロセスを nohup の下に置くにはどうすればよいですか?」に投稿されたものと非常によく似ています。

コマンド ラインから foo.sh を実行すると、別のシェル スクリプトが実行されます。例えば:

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

ここで、Ctrl+Z を押して「foo.sh」を一時停止します。私の「jobs -l」にリストされています。

foo.sh の孫でないように、baz.sh を破棄するにはどうすればよいですか? 「disown」と入力すると、foo.sh だけがその親から否認されますが、これはまさに私が望んでいるものではありません。foo.sh プロセスと bar.sh プロセスを強制終了し、baz.sh だけを残したいと考えています。

私の現在の回避策は、baz.sh を "kill -18" (再開) して作業を続行することですが、前述のプロセスを強制終了することをお勧めします。ありがとう。

4

1 に答える 1

1

psの PID を取得するために使用し、それを強制終了bar.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 に答える