Linux平台下停止后台进程脚本编写

来源:互联网 发布:bluehost域名跳转 编辑:程序博客网 时间:2024/06/05 19:14

1、场景说明

  1. [root@master ~]# jps -m
  2. 33050 Jps -m
  3. 3299 NameNode
  4. 3747 ResourceManager
  5. 9028 ConsoleConsumer --zookeeper 192.168.168.200:2181 --topic BusTicket
  6. 4331 Worker --webui-port 8081 spark://master:7077
  7. 3400 DataNode
  8. 3849 NodeManager
  9. 4450 Kafka config/server.properties
  10. 9303 ConsoleConsumer --zookeeper 192.168.168.200:2181 --topic Result
  11. 4243 Master --host master --port 7077 --webui-port 8080
  12. 3590 SecondaryNameNode
  13. 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 数值

  1. [root@master ~]# ps -ef | grep -v grep | grep BusTicket | awk '{print $2 }'
  2. 9027

之后再使用kill -9 9027 ,为了方便快捷,采用shell脚本停止后台进程更加好。

2、创建脚本文件 stopServer.sh

  1. #!/bin/sh
  2. ### find pid
  3. pid=`ps -ef | grep -v grep | grep BusTicket | awk '{print $2 }'`
  4.  
  5. if [ -n "$pid" ];then
  6. ### kill pid
  7. kill -9 $pid
  8. ### check status
  9. process_count=`ps -ef | grep -v grep | grep BusTicket | wc -l`
  10. while [ $process_count -ne 0 ]
  11. do
  12. sleep 2
  13. process_count=`ps -ef | grep -v grep | grep BusTicket | wc -l`
  14. done
  15. echo 'BusTicket is stoped'
  16. else
  17. echo 'can not find BusTicket'
  18. fi
原创粉丝点击