shell-查询任务进程

  • 对于普通进程或者docker容器进程,原理都基本一致,理解即可
  1. 查询进程的pid
    1. 这里以mysql 为例查找
    2. 利用ps aux | grep mysql (这里利用ps- ef效果都是一样的)

      可以看到pid在第二列,这里需要注意。

    3. 将此命令加进脚本里面
      #!/bin/bash
      #mysql的所有进程的PID
      pid=$(ps aux | grep "mysql" | awk '{print $2}')
      echo "mysql所有相关PID:"$pid

       分析: ps是查看指令, grep是条件 ,awk是打印我们需要的字段PID在第二个字段 print $2 ,print $1就会是root。
      我们加入限制条件查找local下的mysq

      #!/bin/bash
      pid=$(ps aux | grep "mysql" | awk '{print $2}')
      echo "mysql的所有进程的PID:" $pid
      
      #第二组
      pid2=$(ps aux | grep 'mysql' | grep 'local' | awk '{print $2}')
      echo "local下的mysql进程PID:"$pid2
      
      
      #第三组
      pid2=$(ps aux | grep 'mysql' | grep 'local' | awk '{print $1}')
      echo "打印第一个列内柔:"$pid2

  2. 搜索容器相关进程(主要利用docker ps或者docker ps -a ,搜索到进程之后就可以进行一系列的操作,这里只是举两个小例子)
    1. 第一种情况也是我写该脚本的主要原因,我自己是利用Vmare来学习,但一不小心重启或者断电,则容器都是停止状态,每次还要一个个的启动,为了省事,所以写了个脚本来启动容器(能够一键式的傻瓜式操作,尽量利用脚本或者宏之类的来代替,省时又省力~),这里docker ps -a是搜索所有的容器,包括已停止运行的。
      • #!/bin/bash
        master_id=$(docker ps -a|grep "master" |awk '{print $1}')
        echo "=====The master containerId is :"$master_id=========
        
        slave01_id=$(docker ps -a |grep "slave01"|awk '{print $1}')
        echo "=====The slave01 containerId is :"$slave01_id=======
        
        slave02_id=$(docker ps -a |grep "slave02"|awk '{print $1}')
        echo "=====The slave02 containerId is :"$slave02_id=======
        docker restart $master_id
        docker restart $slave01_id
        docker restart $slave02_id
        echo "---------------successful to start master,slave01 and slave02-----------------------"
      • 这里利用start和restart的效果应该是一致的,我后来也写了一个关闭所有相关容器的脚本,与这个大同小异。

    2. 第二种情况去利用镜像运行容器,然后再搜索响应进程
      •   
        #!/bin/bash
          
        #运行mysql
        docker run -d -p 4406:3306 registry.cn-hangzhou.aliyuncs.com/zhufc/mysql:v2
        docker ps
        #获取到ID
        id=$(docker ps |grep "mysql" | awk '{print $1}')
        echo "容器id:"$id
        
        
        #进入容器
        docker exec -it $id bash
        #打印当前的路径
        pwd

猜你喜欢

转载自www.cnblogs.com/codehero/p/13204989.html