Linux平台下停止后台进程脚本编写
1、场景说明
- [root@master ~]# jps -m
- 33050 Jps -m
- 3299 NameNode
- 3747 ResourceManager
- 9028 ConsoleConsumer --zookeeper 192.168.168.200:2181 --topic BusTicket
- 4331 Worker --webui-port 8081 spark://master:7077
- 3400 DataNode
- 3849 NodeManager
- 4450 Kafka config/server.properties
- 9303 ConsoleConsumer --zookeeper 192.168.168.200:2181 --topic Result
- 4243 Master --host master --port 7077 --webui-port 8080
- 3590 SecondaryNameNode
- 4413 QuorumPeerMain /usr/local/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
使用jps -m 命令查看当前运行的java进程,如果我现在需要删除【9028 ConsoleConsumer --zookeeper 192.168.168.200:2181 --topic BusTicket】这个进程:
获取进程执行pid,以便使用kill指令关闭进程
这里使用的 | 管道连接指令的方法。
1、 显示所有进程详情
2、 不显示 grep自身进程
3、 查找进程对应的关键字 ‘BusTicket’,注意必须是此进程独有的关键字
4、 使用awk指令获取 pid 数值
- [root@master ~]# ps -ef | grep -v grep | grep BusTicket | awk '{print $2 }'
- 9027
之后再使用kill -9 9027 ,为了方便快捷,采用shell脚本停止后台进程更加好。
2、创建脚本文件 stopServer.sh
- #!/bin/sh
- ### find pid
- pid=`ps -ef | grep -v grep | grep BusTicket | awk '{print $2 }'`
- if[-n "$pid"];then
- ### kill pid
- kill -9 $pid
- ### check status
- process_count=`ps -ef | grep -v grep | grep BusTicket | wc -l`
- while[ $process_count -ne 0]
- do
- sleep 2
- process_count=`ps -ef | grep -v grep | grep BusTicket | wc -l`
- done
- echo 'BusTicket is stoped'
- else
- echo 'can not find BusTicket'
- fi