微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux-用于记录进程ram和cpu使用情况的小sh脚本

我在centos机器上有以下sh脚本:

echo "PID,cpu,MEM,PROC"
while [ 1 ]
do
    ps aux | grep MysqL | awk '{print  $2",", $3",", $4",", $11}'
    sleep 1
done

每个周期的输出具有以下输出

1163, 0.0, 0.0, /bin/sh
1265, 0.0, 1.5, /usr/libexec/MysqLd
11807, 0.0, 0.3, grep

我想知道如何循环输出并使用变量合并值并仅返回一行:我在合并结果中不需要PID和PROC

MysqL, 0.0, 1.8

其中0.0是cpu(所有进程的cpu使用率总和)和1.8 RAM(所有进程的RAM使用率总和).

解决方法:

ps -eo "comm %cpu %mem" --no-headers | awk '{a[$1] = $1; b[$1] += $2; c[$1] += $3}END{for (i in a)printf "%s, %0.1f, %0.1f\n", a[i], b[i], c[i]}' | sort

输出示例:

awk, 0.0, 0.0
bash, 0.0, 1.5
ps, 0.0, 0.0
sort, 0.0, 0.0

具体过程:

ps -C bash -o "comm %cpu %mem" --no-headers | awk '{a[$1] = $1; b[$1] += $2; c[$1] += $3}END{for (i in a)printf "%s, %0.1f, %0.1f\n", a[i], b[i], c[i]}'

输出

bash, 0.0, 1.5

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐