命令如下:

ps -eo pid,%mem,rss,cmd --sort=-rss | awk 'NR==1{print "PID\t%MEM\tRSS(MB)\tCOMMAND"} NR>1{printf "%-8s %-6s %6.0fMB %s\n", $1, $2"%", $3/1024, $4}' | head -11

输出效果如下:

PID     %MEM   RSS(MB)  COMMAND
1234    50%    1024MB   example_process1
5678    30%    512MB    example_process2
...

让我们逐步解释这行命令:

  1. ps: 这是用于查看当前系统进程信息的命令。
  2. -eo pid,%mem,rss,cmd: 这是 ps命令的参数,用于指定输出的格式。pid表示进程ID,%mem表示内存占用百分比,rss表示进程的实际物理内存占用大小(以KB为单位),cmd表示进程的命令行。
  3. --sort=-rss: 使用 --sort参数来按照内存占用进行逆序排序(从高到低)。-rss 表示按照RSS字段(物理内存占用)进行逆序排序。
  4. |: 这是管道操作符,它将一个命令的输出作为另一个命令的输入。在这里,它将 ps -eo pid,%mem,rss,cmd --sort=-rss的输出作为 awk命令的输入。
  5. awk: 这是用于文本处理的强大命令行工具。
  6. 'NR==1{print "PID\t%MEM\tRSS(MB)\tCOMMAND"}': 这是 awk的第一个动作,表示处理输入的第一行(标题行)。在这里,当行号 NR等于1时,awk会打印输出一个标题行,其中包含PID、内存占用百分比、物理内存占用(以MB为单位)和进程的命令行。
  7. 'NR>1{printf "%-8s %-6s %6.0fMB %s\n", $1, $2"%", $3/1024, $4}': 这是 awk的第二个动作,表示处理输入的其他行(从第二行开始)。在这里,当行号 NR大于1时,awk会格式化输出进程的相关信息。$1$2$3$4分别代表输入行的第1列、第2列、第3列和第4列,即进程ID、内存占用百分比、物理内存占用(以KB为单位)和进程的命令行。printf语句按照指定的格式输出这些信息,并且将内存占用($3/1024)转换为以MB为单位,使用 %-8s%-6s来使输出结果对齐。
  8. |: 再次使用管道操作符,将 awk的输出作为 head命令的输入。
  9. head -11: 最后,使用 head命令截取前11行结果。这里需要注意的是,标题行已经占用了一行,所以这里截取的是剩下的前10行结果(10个进程信息加上1个标题行),因此显示占用内存最多的10个进程的信息。

综上,该命令的目的是列出占用内存最多的10个进程的PID、内存占用百分比、物理内存占用(以MB为单位)和进程的命令行,并且标题行会显示在第一行。


如果支付遇到问题,请联系我们
Weixin1:Aburauru Weixin2:wanglanyy QQ:95387119
Last modification:August 6, 2023
如果觉得我的文章对你有用,请随意赞赏,点赞也是鼓励!