Signals
僅當“優雅”方式不起作用時才殺死 -9 的慣用方式?
是否有通用方法或現有實用程序來執行以下操作?
kill
一個過程- 給它幾秒鐘優雅地關閉
kill -9
如果它沒有停止
通常我會盡量保持簡單:
kill $pid; sleep 5; kill -9 $pid
或者,如果您願意,可以按名稱搜尋程序:
pkill $pattern; sleep 5; pkill -9 $pattern
當您在終端中工作時,這很方便,但對於腳本,您可能更喜歡另一個答案的更複雜的解決方案。
把它放在你的 ~/.bashrc 文件中。像這樣使用它
killany program_name
。它將嘗試殺死任何具有匹配名稱的程序。killany () { PS=$(ps aux) PIDS=$(echo "$PS" | \ awk -v proc="$1" '{ reg=proc; if(match($11$12$13$14,reg)) print $2 }') if [ -n "$PIDS" ]; then echo "killing pids '$PIDS'" kill $PIDS 2> /dev/null sleep 3 kill -1 $PIDS 2> /dev/null sleep 2 kill -9 $PIDS 2> /dev/null else echo "none to kill" fi }