关于linux查询free内存消耗命令

1、查询docker的镜像消耗free总和
 

docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.MemUsage}}" | awk '
NR==1 { print; next }
{
  split($3, a, "/");
  mem = a[1];
  if (mem ~ /MiB/) {
    mem_mb = substr(mem, 1, length(mem)-3);
  } else if (mem ~ /GiB/) {
    mem_mb = substr(mem, 1, length(mem)-3) * 1024;
  } else {
    mem_mb = 0;
  }
  printf "Container: %s, Name: %s, MemUsage: %.2f MB\n", $1, $2, mem_mb;
  total_mem += mem_mb;
}
END { printf "Total MemUsage: %.2f MB\n", total_mem }
'

解释

  • docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.MemUsage}}":获取所有容器的内存使用情况,并以表格格式输出容器 ID、容器名称和内存使用。
  • awk
    • NR==1 { print; next }:打印表头(第一行)。
    • split($3, a, "/"); mem = a[1];:拆分内存使用字段,提取实际使用的内存部分。
    • if (mem ~ /MiB/) { ... } else if (mem ~ /GiB/) { ... }:根据内存单位(MiB 或 GiB)转换为 MB。
    • printf "Container: %s, Name: %s, MemUsage: %.2f MB\n", $1, $2, mem_mb; total_mem += mem_mb;:打印每个容器的内存使用,并累加总内存使用。
    • END { printf "Total MemUsage: %.2f MB\n", total_mem }:在处理完所有记录后,输出总内存使用。

2、查询java -cp命令的free总和

ps -eo pid,user,vsz,rss,comm,args | grep 'java -cp' | grep -v grep | sort -k4 -nr | awk '
BEGIN { total_rss = 0 }
{
  rss_mb = $4 / 1024;
  printf "PID: %d, USER: %s, VSZ: %.2f MB, RSS: %.2f MB, COMMAND: %s, ARGS: %s\n", $1, $2, $3 / 1024, rss_mb, $5, substr($0, index($0, $6));
  total_rss += rss_mb;
}
END { printf "Total RSS: %.2f MB\n", total_rss }
'

解释

  • ps -eo pid,user,vsz,rss,comm,args:列出所有进程的信息,包含 PID、用户、虚拟内存、常驻内存、命令和完整的命令行参数。
  • grep java:筛选出包含 java 的行。
  • grep -v grep:排除包含 grep 的行,以免抓到本次 grep java 命令自身。
  • sort -k4 -nr:按第4列(RSS)降序排列。
  • awk
    • BEGIN { total_rss = 0 }:在处理记录之前初始化 total_rss 为 0。
    • { rss_mb = $4 / 1024; printf "PID: %d, USER: %s, VSZ: %.2f MB, RSS: %.2f MB, COMMAND: %s, ARGS: %s\n", $1, $2, $3 / 1024, rss_mb, $5, substr($0, index($0, $6)); total_rss += rss_mb; }:处理每条记录,将 RSS 从 KB 转换为 MB,并将其累加到 total_rss 中。
    • END { printf "Total RSS: %.2f MB\n", total_rss }:在处理完所有记录后输出 total_rss

3、查询java -cp的各个进程的占用内存 

ps -eo pid,user,vsz,rss,comm,args | grep 'java -cp' | grep -v grep | sort -k4 -nr | awk '{ printf "PID: %d, USER: %s, VSZ: %.2f MB, RSS: %.2f MB, COMMAND: %s, ARGS: %s\n", $1, $2, $3/1024, $4/1024, $5, substr($0, index($0,$6)) }'

解释

  • ps -eo pid,user,vsz,rss,comm,args:列出所有进程的信息,包含 PID、用户、虚拟内存、常驻内存、命令和完整的命令行参数。
  • grep java:筛选出包含 java 的行。
  • grep -v grep:排除包含 grep 的行,以免抓到本次 grep java 命令自身。
  • sort -k4 -nr:按第4列(RSS)降序排列。
  • awk '{ printf "PID: %d, USER: %s, VSZ: %.2f MB, RSS: %.2f MB, COMMAND: %s, ARGS: %s\n", $1, $2, $3/1024, $4/1024, $5, substr($0, index($0,$6)) }':格式化输出,将 VSZRSS 从 KB 转换为 MB,并显示具体的程序路径。

4、ps 命令查看进程内存使用情况
按内存使用百分比排序,并显示前几行占用内存最多的进程。

ps aux --sort=-%mem | head

用mb显示
 

ps aux --sort=-%mem | awk 'NR==1 {print; next} {printf "%s %s %s %s %.2f MB %.2f MB %s %s %s %s %s %s %s\n", $1, $2, $3, $4, $5/1024, $6/1024, $7, $8, $9, $10, $11, $12, $13}'

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值