2010-03-18 131 views
2

假設我們有一個BASH腳本在後臺運行一些命令。有時我們想要殺死所有人,無論他們是否完成了工作。如何殺死所有異步進程

下面是一個例子:

function command_doing_nothing() { 
    sleep 10 
    echo "I'm done" 
} 

for ((i = 0; i < 3; i++)); do 
    command_doing_nothing & 
done 

echo "Jobs:" 
jobs 

sleep 1 

# Now we want to kill them 

如何殺死這3個職位在後臺運行?

回答

3

ALL工作(只要這個腳本在自己的殼實例上運行):

for x in $(jobs -p); do kill $x; done 
+2

請不要做'殺-9'當它是不必要的。 http://speculation.org/garrick/kill-9.html – 2010-03-18 12:12:23

+0

@丹尼斯好點,修正 – Andy 2010-03-18 12:35:17