如何编写一个脚本,该脚本提供系统中具有最大内存使用量的进程的用户的输出。脚本是sh。我尝试使用top命令作为起点,但它似乎不适用于管道,因为它会一直运行直到它退出。
答案 0 :(得分:3)
如果您只想使用最多内存的进程的用户名,请尝试以下操作:
$ ps axho user --sort -rss | head -1
这将检查进程的常驻内存大小rss
。如果您更愿意检查整个虚拟尺寸,请使用vsz
代替rss
。如果您想要使用驻留内存的百分比,请使用pmem
(但由于调度程序,这可能会随时改变,并且可能无法提取最大的内存占用量)。如果您想要使用用户ID而不是用户名,请使用uid
代替user
。
ps
选项包括:
ax
代表“所有流程”(每个人)h
表示输出中的“无标题”o
指定输出格式:user
(用户名)--sort -rss
按rss
排序(降序排列) head -1
删除了除第一行以外的所有行(由于它按降序排列,因此具有最大的rss
。)
不仅可以获得用户名,还可以获得有关该过程的更多信息,例如:
$ ps axho user,pid,rss --sort -rss | head -1
这将在一行中提供顶级进程的用户名,进程ID和常驻内存使用情况。您可以在使用它的任何脚本中单独提取值。
答案 1 :(得分:1)
这适用于centos:列出大多数内存成本过程
[root@182 ~] # ps aux | sort -k 4 -r | head -n2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 7048 0.2 9.6 8060236 1573612 ? Ssl Dec14 8:23 java -Djava.security.e
sort -k 4:按第四列排序,我的电脑专栏4 =%MEM
在其他linux / unix中,您可能会找到适合内存的列号