Shell脚本查询进程并kill进程(集群版)

记录: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日

猜你喜欢

转载自blog.csdn.net/zhangbeizhen18/article/details/131153735