根据一个进程的名字或启动此进程的命令(连续的一部分即可)杀死进程

笔记:根据一个进程的名字或启动此进程的命令(连续的一部分即可)杀死进程

一、使用单条命令

ps -ef | grep 进程名/启动进程的命令 | grep -v grep | awk '{print $2}' | xargs kill -9

测试:

终端输入:

sleep 200 &

sleep 200 &

ps -ef | grep sleep | grep -v grep | awk '{print $2}' | xargs kill -9

执行结果:

[1]-  已杀死               sleep 200

[2]+  已杀死               sleep 200

二、编写脚本

linux脚本名:kill_process.sh

#!/bin/bash

# 脚本名:kill_process.sh
# 脚本功能:强制杀死进程 方式kill -9
    # 1通过ps查询进程的id
    # 2使用kill -9 强制终止进程
# 启动方式:/bin/bash kill_process.sh 进程名

# 如果参数个数不等于1  提示错误并退出程序
if [ $# -ne 1 ]
then
    echo "参数个数有误 请使用此方式运行:/bin/bash kill_process.sh 进程名"
    exit 1
fi

# 获取要被杀死的进程名
pName=$1

<<!
    函数功能:根据进程名杀死程序
    参数:进程名
    返回值:无
!
kill_processes(){
    # 获取进程id
    pids=$(ps -ef | grep "$1" | grep -v grep | grep -v $0 | awk '{print $2}')
    for pid in $pids
    do
        kill -9 $pId
    done
}

echo 将要被终止的进程有:
echo ------------------------------------------------------------------
# 根据进程名查询包含进程名的进程 并排除grep查询进程和此脚本进程
ps -ef | grep "$pName" | grep -v grep | grep -v $0
echo ------------------------------------------------------------------
# 确认是否杀死程序
read -t 10 -p "10秒后将自动杀死这些进程,请确认是否杀死这些进程(y/n):" ipt

case $ipt in
    "n")
        echo "==我还不想干掉它们"
        exit 0;;
    "y")
        echo "是的,立即干掉它们"
        kill_processes $pName;;
    "")
        # 没有输入确认信息  默认杀死程序
        echo ""
        echo "开始自动杀死这些程序"
        kill_processes $pName;;
    *)
        echo "您的输入有误,将终止脚本"
        exit 1;;
esac

测试:

# 终端后台启动两次延时命令

sleep 200 &

sleep 200 &

# 启动脚本

/bin/bash kill_process.sh sleep  或  /bin/bash kill_process.sh "sleep 200"

执行结果:

将要被终止的进程有:
------------------------------------------------------------------
python    13583  13550  0 19:42 pts/6    00:00:00 sleep 200
python    13584  13550  0 19:42 pts/6    00:00:00 sleep 200
------------------------------------------------------------------
10秒后将自动杀死这些进程,请确认是否杀死这些进程(y/n):y
是的,立即干掉它们
[1]-  已杀死               sleep 200
[2]+  已杀死               sleep 200

如果每次使用命令:"/bin/bash 脚本路径 程序"来启动脚本会很麻烦

我们可以将这个命令加入到我们的环境变量里面去 这样使用起来就会方便很多

比如我们将它加入到当前用户(也可以修改全局的对所有用户生效)的环境变量中:

# 修改当前环境变量的文件

vi ~/.bash_profile

# 最后一行添加 

my_kill="/bin/bash 脚本路径"

保存后执行source ~/.bash_profile使立即生效

之后只要我们在当前用户下就可以使用命令:"$my_kill 程序"来执行了

————————————————
版权声明:本文为CSDN博主「qq_41864652」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41864652/article/details/81021184

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值