需求
通过 "kill -9 进程名 " 的方式停止某一个进程
那么需要知道进程名 这里使用awk的方式过滤进程名.
思路
举例: 想对使用logserver-flume-kafka.conf配置文件的flume-java进程进行操作;
第一步
使用命令: ps -ef | grep logserver-flume-kafka.conf
发现有2个进程
()
第一个1249 是java进程,也就是我们需要操作的
第二个是 ps -ef 本身的命令 我们需要过滤的
第二步
ps -ef | grep logserver-flume-kafka.conf | grep -v grep
所以在加grep -v grep 过滤掉grep
第三步
ps -ef | grep logserver-flume-kafka.conf | grep -v grep | awk ‘{print $2}’ | xargs -n1 kill -9
就可以杀死了
awk 默认按照空格切 ‘print $2’ 表示打印第二个
xargs表示 传参 把前面的结果往后面的命令参数 -n1 表示每次传第1个参数
总结
ps -ef | grep logserver-flume-kafka.conf | grep -v grep | awk ‘{print $2}’ | xargs -n1 kill -9 使用这个命令
注意在脚本中 要对 $2进行转义 加上\ 否则认为是第二个参数
第二种方法 直接使用 awk的过滤 不用grep
ps -ef | awk ‘/logserver-flume-kafka.conf/ && !/awk/ {print $2}’ | xargs -n1 kill -9
部分截图
ps -ef | awk ‘/logserver-flume-kafka.conf/’