《轻轻地杀了我》

《轻轻地杀了我》

是否有通用方法或现有实用程序可以执行以下操作?

  • kill一个过程
  • 给它几秒钟以正常关闭
  • kill -9如果它还没有停止的话

答案1

通常我会尽量让事情变得简单:

kill $pid; sleep 5; kill -9 $pid

或者,如果您愿意,您可以按进程名称搜索进程:

pkill $pattern; sleep 5; pkill -9 $pattern

当您在终端中工作时,这很方便,但对于脚本编写,您可能更喜欢另一个答案中的更复杂的解决方案。

答案2

将其放入 ~/.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
}

答案3

《轻轻地杀了我》

我刚刚为此运行了几个小型 shell 脚本的项目。

https://github.com/alanfranz/killmesoftly

相关内容