zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    [Oracle工程师手记]如何收集 RMAN 工作时的 10046 trace
    [Linux]Linux环境,如何查找一个目录下所有包含特定字符串的文件
    [Oracle工程师手记]如何找到 RMAN 的所有 session
    PowerShell提交HTTP Request Post请求
    PowerShell计算字符串MD5 Hash值
    《异类》笔记
    《哈弗商学院 判断与决策心理学课》笔记
    《影响力》笔记
    《金字塔原理》笔记
    三月十九日,偶感
  • 原文地址:https://www.cnblogs.com/codehero/p/13204989.html
Copyright © 2011-2022 走看看