在linux当中经常遇到根据程序名终止进程的情况,最近,我就遇到了这种情况:
怎么办,利用awk获取行,进行kill就可以了,具体如下:
root@imx6ulevk:/mnt# ps -ef|grep DB|grep -v grep|awk '{system("echo "$2";kill -9 "$2)}'1722717298173401739617444174981754517612
一个命令就解决了问题,下面解释一下:
root@imx6ulevk:/mnt# ps -ef|grep realDIToDB|grep -v grep|awk '{system("echo "$2";kill -9 "$2)}'
1、获取匹配项
ps -ef|grep DB|grep -v grep
ps -ef是获取进程列表;
grep DB:是获取名字为DB的进程
grep -v grep:是不匹配grep的进程,因为,运行grep本身也是一个进程,所以去掉这一个进程,-v这个参数就是不匹配的意思
2、获取进程行并杀掉进程awk '{system("echo "$2";kill -9 "$2)}'
awk :是启用awk脚本语文
system():是执行系统命令
echo $2; :是显示第二行,就是进程号
kill -9 $2:就是根据进程号,杀死进程
从这里可知awk的功能非常的强大,不仅可以获取列信息,而且还可以执行系统命令,真的非常的强大。