我正在尝试制作一个简单的单行程序bash,它输出所有正在运行的程序及其内存占用。我有一个基本的解决方案,如下所示:
ps -ely | awk '{ print $8 "\t" $13 }' | sort -h
这将打印出如下内容:
8348 urxvt
8376 urxvt
19716 X
320820 firefox
现在这样可行,但将内存输出转换为更人性更好 可读的形式,例如'320M firefox'而不是'320820 firefox'。我试过在awk中查看substr(),但我似乎无法正确使用语法。有没有人有好的建议?
答案 0 :(得分:2)
您可以尝试此awk
,
ps -ely | awk '{ if( $8 > 1024 )print int($8/1024) "M\t" $13 ; else print $8 "K\t" $13; }' | sort -h
答案 1 :(得分:1)
也许这可以为你做到
ps -ely | awk '{ print $8/1024/1024 "\t" $13 }'
输出类似于:
0.082 ps
0.089 awk
0.053 oracle
0.046 mingetty
答案 2 :(得分:0)
使用sed:
sed -r 's/^([0-9]{3})[0-9]*/\1/g'
用最后的3代替所有数字。