美文网首页
shell编程第八节--shell编程实战

shell编程第八节--shell编程实战

作者: 梦回上玄 | 来源:发表于2019-08-19 11:56 被阅读0次

shell快讲第一节--shell基础
shell快讲第二节--管道与重定向
shell快讲第三节--正则表达式
shell快讲第四节--sed与awk
shell快讲第五节--shell语法基础
shell快讲第六节--shell函数编程
shell快讲第七节--shell编程规范与调试
shell快讲第八节--shell编程实战

shell场景化编程

状态查询类脚本解析

1、进程状态查询,这是我们之前写的一个进程查询类的脚本,SEP是自定义的分隔符,实际写脚本中为了方便被第三方软件采集,自定义分隔符是必要的,当然或许输出不那么好看

#!/bin/bash

#通用的进程查看,提取了最关键的几个维度
#process_name='mysqld'

SEP="@"

checkprocess(){
    p_pids=`ps -aux |grep -v grep |grep $1|awk {'print $2'}`
    echo "HOSTNAME${SEP}COMMAND${SEP}STAT${SEP}USER${SEP}PID${SEP}CPU${SEP}MEM${SEP}INFO"
    if [ -z "$p_pids" ];then
      echo "no found process"
    else
        for p_pid in $p_pids;
        do
            p_command=`ps -axu |grep -v grep |grep $1 |grep $p_pid |awk {'print $11" "$12'}`
            p_stat=`ps -axu |grep -v grep |grep $1 |grep $p_pid |awk {'print $8'}`
            p_user=`ps -axu |grep -v grep |grep $1 |grep $p_pid |awk {'print $1'}`
            p_cpu=`ps -axu |grep -v grep |grep $1 |grep $p_pid |awk {'print $3'}`
            p_mem=`ps -axu |grep -v grep |grep $1 |grep $p_pid |awk {'print $4'}`
            # echo 'COMMAND,STAT,USER,PID,CPU,MEM,INFO'
            echo "$HOSTNAME${SEP}$p_command${SEP}$p_stat${SEP}$p_user${SEP}$p_pid${SEP}$p_cpu${SEP}$p_mem${SEP}found process $1"
        done

    fi
}
#checkprocess $process_name
checkprocess @option.process_name@

上面的脚本是我们随手写的,其实也有很多不科学的地方,首先各个采集数据并不是一个cpu时间片下的,大家看下下面,对比下上面的哪里不够科学

SEP="@"

checkprocess(){
    p_pids=`ps -aux |grep -v grep |grep $1|awk {'print $2'}`
    echo "COMMAND${SEP}STAT${SEP}USER${SEP}CPU${SEP}MEM${SEP}PID${SEP}HOSTNAME${SEP}INFO"
    if [ -z "$p_pids" ];then
        echo "No found process"
    else
        for p_pid in $p_pids;
        do
        a=`ps -axu |grep $1 |grep $p_pid`#这里如果不单独给变量,会被awk带来未知影响,要测试好
        echo $a |awk -v pid=$p_pid -v hostname=$HOSTNAME -v i="found telegraf" 'BEGIN{OFS="@"}{print $8,$1,$3,$4,pid,hostname,i}'
        done
    fi
}
#checkprocess $process_name
checkprocess telegraf

分析:下面的代码所有的采集数据是一个ps命令产生的,相对第一个代码就更科学一点,我们也可以用time命令来测下两个脚本的执行时间损耗
未完待续.....

相关文章

  • shell 案例

    Shell编程一 Shell防范ARP攻击 Shell编程二 Shell防范DDos攻击 Shell编程三 ...

  • shell编程第八节--shell编程实战

    shell快讲第一节--shell基础shell快讲第二节--管道与重定向shell快讲第三节--正则表达式she...

  • shell 第一天

    shell编程初识 1.1 shell编程初识 shell的定义 Shell 是命令解释器 Shell 也是...

  • 78.shell编程

    shell编程 Shell脚本,是一种为shell编写的脚本程序。 Shell编程跟JavaScript、Pyth...

  • 2019-01-25

    Linux系统Shell编程指南 前言 适合人群:有类似C编程基础的人 一、Shell编程介绍 Shell解释型语...

  • day 28

    shell编程基础 shell编程一小时光速入门web集群架构会用到shell编程基础 1、为什么要学shell编...

  • Shell 编程的 Hello World

    什么是 Shell?简单来说,Shell 编程是对 Linux 命令的逻辑化处理。 来看看 Shell 编程是如何...

  • Shell 编程的 Hello World

    什么是 Shell?简单来说,Shell 编程是对 Linux 命令的逻辑化处理。 来看看 Shell 编程是如何...

  • 后端运维人员必备shell编程入门

    本文转载自 公众号 Snailclimb Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell...

  • Linux Shell命令行及脚本编程实例详解

    《Linux Shell命令行及脚本编程实例详解》Shell学习实战秘笈,CU论坛力荐,300个实例,2个项目案例...

网友评论

      本文标题:shell编程第八节--shell编程实战

      本文链接:https://www.haomeiwen.com/subject/ynrssctx.html