#!/bin/bash # 分析文本内容 # USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND # root 1 0.0 0.1 37344 4604 ? Ss 2020 2:13 /sbin/init # 业务知识 # 这是 ps 命令输出的结果 # VSZ: 虚拟内存大小(在这个例子中是 37344 KB) # RSS: 实际内存使用(在这个例子中是 4604 KB) # 问题提炼:统计VSZ,RSS各自的总和(以M兆为统计) # 输出的格式: # MEM TOTAL 直接打印 # VSZ_SUM:3250.8M,RSS_SUM:179.777M # 思路: # VSZ 在第5列,RSS在第6列 # awk 两个变量 分别统计 VSZ 和 RSS # 1024KB = 1MB bit--B--KB---MB---GB----TB 汇总后的KB 除以 1024 得到对应的MB 显示 grep -v 'USER' nowcoder.txt | awk ' BEGIN{ vsz_sum = 0 rss_sum = 0 } { vsz_sum += $5 rss_sum += $6 } END{ print "MEM TOTAL" printf("VSZ_SUM:%0.1fM", vsz_sum/1024) printf "," printf("RSS_SUM:%0.3fM", rss_sum/1024) } '
END