是否有通用方法或现有实用程序可以执行以下操作?
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
}