ubuntu shell 监控某个进程占用的资源

#!/bin/bash
pid=19462//声明一个变量,值为你需要监控的进程的pid,这个pid可以通过top命令拿到
interval=10//监控的时间间隔,值为10秒
while true//while循环,条件设置为真会一直执行
do//标志循环体开始
echo $(date +"%y-%m-%d %H:%M:%S") >>./log.txt//获取当前时间输出到./log.txt文件中
echo `top -n 1 -b|grep $pid` >>./log.txt//-n 1表示更新的次数设置为1,因为top命令默认是一直刷新程序的资源使用信息。-b表示使用批次档模式,具体含义不是很清除,但是当我把这个脚本设置为回台运行的时候如果没有加上这个-b,关闭xshell会话后这个top就获取不到信息了,所以这个一定要加上。grep $pid`表示从命令结果中查询出带有19462字符的行。然后输出到log.txt
sleep $interval//睡眠10秒
done//标志循环体结束

可以直接使用./test.sh执行。

如果要后台执行直接在后面加上&是可以的如:。./test.sh &,但是这种方式执行的后台可能你关闭掉xshell当前会话后就被关闭了。

可以使用setsid ./test.sh &来运行脚本,可以避免会话关闭后脚本就被强制挂掉的情况。

查看脚本是否在运行可以使用:ps -ef|grep test(这里的test是你自己的脚本名称),当你想强制关闭后台运行的脚本时可以使用kill pid(pid是你用前面的命令查出来的自己的脚本对应了pid)的方式

posted @ 2021-03-10 10:32  maycpou  阅读(377)  评论(0编辑  收藏  举报