top命令
批处理模式:数据可以持久化存储,对数据进行分析
Shell中通过 -b 参数来指定为批处理模式
top -b -n 1 > toplog.txt
如上命令,top的内容就可以保存到txt文件中了。
实例1:我们想对某两个进程(pid=24619和pid=24798)每隔5s采集一次数据,持续采集2h数据。并将结果保存在/home目录下,文件以toplog_年月日命名。
#!/bin/sh
NAME="/home/toplog_"$(date +%Y-%m-%d)
# -b:批处理模式
# -n:与-b配合使用,更新n次后退出
# -d: 更新周期(s)
# -p:显示指定的进程(pid)信息
/usr/bin/top -b -d 5 -n 1440 -p 24619,24798 >> $NAME.txt
实例2:打印最占CPU前5的进程,每隔30s采集一次数据,持续采集1h数据。并将结果保存在/home目录下,文件以top5cpu__年月日命名。
#!/bin/sh
NAME="/home/top5cpu_"$(date +%Y-%m-%d)
step=5
# 最占CPU前5的进程
n=1
while(($n<=3)) #打印240次结束
do
/usr/bin/top -b -n 1 -o +%CPU| sed -n '7,12p' >> $NAME.txt #去掉前面6行,提取第7行到第12行,即为最占用cpu的top5
n=$((n + 1))
#每隔5秒打印一次
sleep $step
done
实例3:使用crontab定时任务
logtop.sh,放在/home目录下
#!/bin/sh
NAME="/home/toplog_"$(date +%Y-%m-%d)
/usr/bin/top -b -n 1 >> $NAME.txt
编辑定时任务
crontab -e
键盘按 i 进入编辑模式
输入命令:
*/1 * * * * sh /home/logtop.sh #每分钟执行一次
实例4:: crontab 表达式,支持的最小执行时间是1分钟。如需要在小于1分钟内重复执行,比如5s执行一次,可使用下面方法
crontab 表达式不明白没关系,直接使用在线工具转换https://tool.lu/crontab/,方便又不会出错
实时模式:实时可见,但历史数据会流逝,我们没法对数据二次处理和分析
最简单最常用的就是输入top,查看实时信息
关于实时模式使用请看下图。。。