记录:454
场景:使用Shell脚本查询进程并kill进程。使用Shell脚本远程执行脚本查询进程并kill进程。
版本:CentOS Linux release 7.9.2009。
1.使用Shell脚本查询进程并kill进程
1.1脚本
脚本名称:zk-kill_pid.sh
脚本内容:
#!/bin/bash
PID=`ps -ef | grep zookeeper | grep -v grep | awk '{print $2}'`
echo "查出zookeeper相关的进程PID: $PID"
for item in $PID
do
kill -s 9 $item
echo "已经kill进程: $item"
done
执行脚本:sh zk-kill_pid.sh
1.2解析
ps命令:process status的简称。一个查看进程信息工具。查看进程执行瞬间的进程信息工具。查看进程状态、进程使用内存状况、进程使用CPU状况、进程PID等。
ps -ef:-e查看全部进程信息。-f,-f完整格式,包括命令行。打印字段:UID、PID、PPID、C、STIME、TTY、TIME、CMD。
|:管道符,把上一个命令输出内容,出入到下一命令。
grep zookeeper,搜索包含zookeeper关键字的进程。
grep -v grep,-v,不匹配包含grep关键字进程。
awk '{print $2}',使用awk把上一级输入的信息以使用空格分割字符串。$2,取出第二个字符。
kill -s 9,根据进程号kill进程。
2.使用Shell脚本远程执行脚本查询进程并kill进程
2.1脚本
脚本名称:zk-kill_pid_cluster.sh
脚本内容:
#!/bin/bash
for host_name in app161 app162 app163
do
echo "kill主机 ${host_name} zookeeper进程"
echo "1.分发kill脚本到集群每个节点."
if [[ ${host_name} != 'app161' ]] ;then
scp -r /home/opt/zk/zk-kill_pid.sh learn@${host_name}:/home/opt/zk/zk-kill_pid.sh
fi
echo "2.执行kill脚本"
ssh -t learn@${host_name} ' sh /home/opt/zk/zk-kill_pid.sh '
done
执行脚本:sh zk-kill_pid_cluster.sh
2.2解析
示例是要把zookeeper集群中的进程kill掉。
(1)使用scp把/home/opt/zk/zk-kill_pid.sh分发到集群的每个节点。
(2)使用ssh -t命令远程执行zk-kill_pid.sh脚本,查询进程并kill进程。
(3)在脚本中的app161 app162 app163是集群中三台主机的host名称。
3.应用示例
在主机app161、app162、app163的zookeeper集群已经启动。
3.1查看主机app161的zookeeper进程信息
命令:ps -ef | grep zookeeper
日志信息:
3.2远程执行脚本查询进程并kill进程
命令:sh zk-kill_pid_cluster.sh
日志信息:
3.3再次查看主机app161的zookeeper进程信息
命令:ps -ef | grep zookeeper
日志信息:
[learn@app161 zk]$ ps -ef | grep zookeeper
learn 3129 1437 0 15:16 pts/0 00:00:00 grep --color=auto zookeeper
解析:已经没有zookeeper进程信息。
以上,感谢。
2023年6月11日