获取具有大多数内存使用量的进程的用户的脚本?

时间:2016-12-16 04:44:37

标签: linux unix memory-management sh

如何编写一个脚本,该脚本提供系统中具有最大内存使用量的进程的用户的输出。脚本是sh。我尝试使用top命令作为起点,但它似乎不适用于管道,因为它会一直运行直到它退出。

2 个答案:

答案 0 :(得分:3)

如果您只想使用最多内存的进程的用户名,请尝试以下操作:

$ ps axho user --sort -rss | head -1

这将检查进程的常驻内存大小rss。如果您更愿意检查整个虚拟尺寸,请使用vsz代替rss。如果您想要使用驻留内存的百分比,请使用pmem(但由于调度程序,这可能会随时改变,并且可能无法提取最大的内存占用量)。如果您想要使用用户ID而不是用户名,请使用uid代替user

ps选项包括:

  • ax代表“所有流程”(每个人)
  • h表示输出中的“无标题”
  • o指定输出格式:user(用户名)
  • --sort -rssrss排序(降序排列)

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中,您可能会找到适合内存的列号