Shell-Script
從腳本本身殺死腳本的多個實例
我有幾個 script.sh 實例並行執行,做同樣的事情,在後台執行。
我正在嘗試使用一個函式在執行時殺死所有目前正在執行的腳本。
因此,例如, ./script.sh -start 將啟動腳本(我可以並行執行幾個腳本),當我執行時 ./script.sh -kill 將殺死腳本的所有實例。
f() { procName=`basename $0` pidsToKill=`ps -ef | grep $procName | grep -v grep | awk '{ print $2 }'` if [[ $pidsToKill ]]; then for i in $pidsToKill; do kill -9 $i done echo "Killed running scripts." else echo "No opened scripts to kill" fi }
出於某種原因,有時它會殺死幾個腳本,有時會返回錯誤。
我想出了一種方法來解決這個問題,但我想了解為什麼這個方法不起作用。有任何想法嗎?
腳本可能會自殺。您可以嘗試在單獨的子 shell 中執行 for 循環
( for i in $pidsToKill; do kill -9 $i; done; echo All dead. ) &
,然後退出腳本。