Signals

僅當“優雅”方式不起作用時才殺死 -9 的慣用方式?

  • December 16, 2014

是否有通用方法或現有實用程序來執行以下操作?

  • 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
}

引用自:https://unix.stackexchange.com/questions/144918