2012-11-28 58 views
1

我的問題是非常相似發表於:How do I put an already-running process under nohup?如何把一個已經運行的子進程下的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

使用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 
相關問題