• 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
  • 相关阅读:
    活动投票
    人品问题
    网站记录
    浅谈底层常数优化及编译器优化
    透过用户思维谈程序员的进阶之路
    我们为什么要学习?写给我的组员们
    原来你是这样的Websocket--抓包分析
    我看依赖注入
    使用反射+策略模式代替项目中大量的switch case判断
    JavaScript 词法作用域不完全指北
  • 原文地址:https://www.cnblogs.com/codehero/p/13204989.html
Copyright © 2020-2023  润新知