美文网首页LinuxLinux学习之路我用 Linux
Shell脚本:一段有意思的shell脚本之统计进程数

Shell脚本:一段有意思的shell脚本之统计进程数

作者: walker86 | 来源:发表于2020-03-14 19:31 被阅读0次

    背景

    今天在网上看到一个有意思的小脚本,贴出来大家一起看看

    脚本实现内容为:实时统计Linux系统下各类进程的数量(如running、sleeping等)

    实现思路

    一般我们知道,查看具体某项进程,我们可能会用 ps -ef | grep 进程名,或 ps -aux | grep 进程名效果如下:

    image.png

    我们以PID为2179的这个进程来看,其状态是S,即睡眠状态

    在Linux系统的根目录/proc下存放着以每个进程PID命名的文件夹,里面记录了进程的详细信息

    image.png

    我们在进入这个文件夹,里面有个stat文件,记录了进程的详细信息


    image.png

    因此,统计各种状态进程信息就可以循环遍历/proc下的以数字开头的文件夹

    #!/bin/bash
    # 统计 Linux 进程相关数量信息 
     
    running=0
    sleeping=0
    stoped=0
    zombie=0
    # 在 proc 目录下所有以数字开始的都是当前计算机正在运行的进程的进程 PID
    # 每个 PID 编号的目录下记录有该进程相关的信息
    for pid in /proc/[1‐9]*
    do
        procs=$[procs+1]
        stat=$(awk '{print $3}' $pid/stat)
    # 每个 pid 目录下都有一个 stat 文件,该文件的第 3 列是该进程的状态信息
        case $stat in
        R)
            running=$[running+1]
            ;;
        T)
            stoped=$[stoped+1]
            ;;
        S)
            sleeping=$[sleeping+1]
            ;;
        Z)
            zombie=$[zombie+1]
            ;;
        esac
    done
    echo "进程统计信息如下"
    echo "总进程数量为:$procs"
    echo "Running 进程数为:$running"
    echo "Stoped 进程数为:$stoped"
    echo "Sleeping 进程数为:$sleeping"
    echo "Zombie 进程数为:$zombie"
    

    运行一下,查看结果:

    [root@localhost temp]# ./processStatic.sh 
    进程统计信息如下
    总进程数量为:38
    Running 进程数为:0
    Stoped 进程数为:0
    Sleeping 进程数为:38
    Zombie 进程数为:0
    

    相关文章

      网友评论

        本文标题:Shell脚本:一段有意思的shell脚本之统计进程数

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