shell脚本之统计进程数(ubuntu实测可用)

这篇博客介绍了如何在Ubuntu系统中通过shell脚本实时统计Linux系统中running、sleeping等不同状态的进程数量。文章提到,可以利用/proc目录下的进程文件夹及其stat文件获取进程详细信息,并给出了具体的实现思路和运行示例。
摘要由CSDN通过智能技术生成

需求

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

实现思路

一般我们知道,查看具体某项进程,我们可能会用 ps -ef | grep 进程名,或 ps -aux | grep 进程名效果如下:
在这里插入图片描述

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

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

我们在进入这个文件夹,里面有个stat文件,记录了进程的详细信息
在这里插入图片描述
因此,统计各种状态进程信息就可以循环遍历/proc下的以数字开头的文件夹

#!/bin/bash
# 统计 Linux 进程相关数量信息 
 
running=0
sleeping=0
stoped=0
zombie=0
# 在 proc 目录下所有以数字开始的都是当前计算机正在运行的进程的进程 PID
# 每个 PID 编号的目录下记录有该进程相关的信息
for pid in /proc/[19]*
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@ubuntu:~# vi 1.sh
root@ubuntu:~# chmod +x 1.sh
root@ubuntu:~# ./1.sh
进程统计信息如下
总进程数量为:72
Running 进程数为:0
Stoped 进程数为:0
Sleeping 进程数为:72
Zombie 进程数为:0

在这里插入图片描述

参考链接 :
Shell脚本:一段有意思的shell脚本之统计进程数 :https://www.jianshu.com/p/468b10452169

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值