使用 shell 脚本对 Linux 系统和进程资源进行监控(4)
1)源程序(假设上面查询出 CFTestApp 的进程 ID 为 11426)
des=`GetDes 11426` echo "The number of des is $des" if [ $des -gt 900 ] then { echo "The number of des is larger than 900" } else { echo "The number of des is normal" } fi |
2)结果输出
The number of des is 528 The number of des is normal [dyu@xilinuxbldsrv shell]$ |
3)结果分析
从上面的输出可见:CFTestApp 程序当前的句柄使用为 528 个,是正常的,没有超过 900 个的告警限制。
4)命令介绍
wc: 统计指定文件中的字节数、字数、行数 , 并将统计结果显示输出。 参数:-l 统计行数。 -c 统计字节数。 -w 统计字数。 |
---|
端口检测是系统资源检测经常遇到的,特别是在网络通讯情况下,端口状态的检测往往是很重要的。有时可能进程,CPU,内存等处于正常状态,但是端口处于异常状态,业务也是没有正常运行。下面函数可判断指定端口是否在监听。它有一个参数为待检测端口,它首先使用 netstat 输出端口占用信息,然后通过 grep, awk,wc 过滤输出监听 TCP 端口的个数,第二条语句为输出 UDP 端口的监听个数,如果 TCP 与 UDP 端口监听都为 0,返回 0,否则返回 1.
function Listening { TCPListeningnum=`netstat -an | grep ":$1 " | \n awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l` UDPListeningnum=`netstat -an|grep ":$1 " \n |awk '$1 == "udp" && $NF == "0.0.0.0:*" {print $0}' | wc -l` (( Listeningnum = TCPListeningnum + UDPListeningnum )) if [ $Listeningnum == 0 ] then { echo "0" } else { echo "1" } fi } |
示例演示:
1)源程序(例如查询 8080 端口的状态是否在监听)
isListen=`Listening 8080` if [ $isListen -eq 1 ] then { echo "The port is listening" } else { echo "The port is not listening" } fi |
2)结果输出
The port is listening [dyu@xilinuxbldsrv shell]$ |
3)结果分析
从上面的输出可见:这个 Linux 服务器的 8080 端口处在监听状态。
4)命令介绍
netstat: 用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 参数:-a 显示所有连线中的 Socket。 -n 直接使用 IP 地址,而不通过域名服务器。 |