Aristotle
发布于 2023-11-06 / 6 阅读 / 0 评论 / 0 点赞

Linux性能监控命令_pidstat & 统计进程信息

Linux性能监控命令_pidstat & 统计进程信息

https://blog.csdn.net/m0_61066945/article/details/126568206

#!/bin/bash
 
Help(){
        echo -e "Usage: $0 [ options ] [ <interval> [ <count> ] ]"
        echo -e "\t -a: Monitoring all processes"
        echo -e "\t -p{pid}: Specify the pid"
        echo -e "\t -k: Kill pidstat"
        }
 
Main(){
        local log="`pwd`/logs"
 
        [ ! -d ${log} ] && mkdir -p ${log}
        [ "$1" == "p" ] && options="-p $2 $3 $4" || options="$1 $2"
 
        # 输出CPU信息到logs/cpu.log
        pidstat -u ${options}   > ${log}/cpu.log        &
        # 输出内存信息到memory.log
        pidstat -r ${options}   > ${log}/memory.log     &
        # 输出磁盘读写到disk.log
        pidstat -d ${options}   > ${log}/disk.log       &
        # 上下文切换到context.log
        pidstat -w ${options}   > ${log}/context.log    &
        }
 
 
case $1 in
-a)
        Main $2 $3
        ;;
-p)
        Main p "$2" $3 $4
        ;;
-k)
        ps -ef |grep "pidstat" |grep `whoami` |grep -v grep |awk '{print $2}' |xargs kill -9
        ;;
*)
        Help
esac

意义:

同时监控CPU、内存、磁盘、上下文切换信息,输出到不同文件中

作用:

当某个时间段性能出现损耗,可以通过此脚本查看进程的使用情况

使用:

sh xxx.sh -a 1 86400 # xxx.sh表示脚本名,每1秒输出一次,共监控一天

sh xxx.sh -p 123,321 1 86400 # xxx.sh表示脚本名,-p指定单个或多个pid(多个使用逗号分隔),只监控指定的pid。每1秒输出一次,共监控一天

sh xxx.sh -k # 停止pidstat命令