2016-11-08 213 views
2

我試圖做一個操作,在linux嘗試使用OpenSSL的速度如何殺死Bash中的子進程?

這是來自Netflix的猿猴軍隊我的代碼燒CPU

#!/bin/bash 
# Script for BurnCpu Chaos Monkey 

cat <<EOF> /tmp/infiniteburn.sh 
#!/bin/bash 
while true; 
    do openssl speed; 
done 
EOF 

# 32 parallel 100% CPU tasks should hit even the biggest EC2 instances 
for i in {1..32} 
do 
    nohup /bin/bash /tmp/infiniteburn.sh & 
done 

所以這是Netflix的猿軍隊代碼做燒CPU,這執行正常,但問題是我不能殺死所有32個進程,我什麼都試過

pkill -f pid/process name 
killall -9 pid/process name 
etc., 

唯一的成功之路是我殺了這個過程是經由用戶

殺死它
pkill -u username 

如何在不使用用戶名的情況下殺死這些進程?

任何幫助是極大的讚賞

+0

您是否試過'kill -9 pid'? –

+0

是的,我試過沒有運氣 –

+0

可能相關/可能是一個重複:[殺死所有子進程的最佳途徑](http://stackoverflow.com/q/392022)。密切相關的是[如何殺死shell的所有子進程?](http://stackoverflow.com/q/2618403/)有更多Bash經驗的人,那麼我理解這些微妙的東西就必須做出決定。 – jww

回答

1

終止進程不會自動殺其子。殺死你的bash腳本不會中止openssl speed進程。

你可以用你的kill來打一個更寬的網絡,這就是你用pkill -u所做的。或者您可以在腳本中使用trap並添加錯誤處理程序。

cleanup() { 
    # kill children 
} 

trap cleanup EXIT 
+0

你可以投一個更廣泛的網絡與你的殺死電話?你能否提供更多關於這方面的信息, –