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

背景

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

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

实现思路

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

468b10452169

image.png

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

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

468b10452169

image.png

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

468b10452169

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

THE END
< <上一篇
下一篇>>