Linux Shell编程 | 非常适用的top批处理模式

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,查看实时信息

关于实时模式使用请看下图。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我自人间漫浪

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值