我一直在尝试更新一个正在工作的一行程序,以便为系统上使用交换的进程添加用户名,但很难让它工作。
线程here给了我一个很好的脚本,我已经部分成功,但仍然看到一些问题。
for file in /proc/*/status ; do awk -F: '/Tgid|VmSwap|Name/{printf $2 }END{ print ""}' $file; done| grep kB | sort -k 3 -n -r | head -n 10 | awk 'BEGIN { ORS=" " };{print $0 system("ps -o user= -p " $2)}
以上操作将生成输出:
username 0
processname0 1734 334248 kB0 username1
processname1 2314 182360 kB0 root
processname2 2069626 78292 kB0 username2
processname3 2069621 11500 kB0 root
processname4 2540 8720 kB0 root
processname5 1547 4320 kB0 root
processname6 1556 3380 kB0 root
processname7 2069656 3208 kB0 root
processname8 1398 1312 kB0 root
用户名出现在不同的行是一个问题,另一个问题是在“KB”后添加0。
我试过几种不同的方法,但似乎都不起作用。
此外,脚本是通过另一个工具运行,必须是一个一行程序,这是限制选项有点。任何帮助将是伟大的。
2条答案
按热度按时间mlmc2os51#
经过大量的试验和错误,我能够得到这个工作。
下面是最终运行正常的代码片段:
cedebl8k2#
你的命令对我很有效,非常感谢!为了防止你需要更多的细节,我还找到了这个: