很多次,你可能遇见过系统消耗了过多的内存。如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程。我相信,你可能已经运行了下文中的命令以进行检查。如果没有,那你尝试过哪些其他的命令?我希望你可以在评论中更新这篇文章,它可能会帮助其他用户。

使用 top 命令 和 ps 命令 可以轻松的识别这种情况。我过去经常同时使用这两个命令,两个命令得到的结果是相同的。所以我建议你从中选择一个喜欢的使用就可以。

1) 如何使用 ps 命令在 Linux 中查找内存消耗最大的进程

ps 命令用于报告当前进程的快照。ps 命令的意思是“进程状态”。这是一个标准的 Linux 应用程序,用于查找有关在 Linux 系统上运行进程的信息。

它用于列出当前正在运行的进程及其进程 ID(PID)、进程所有者名称、进程优先级(PR)以及正在运行的命令的绝对路径等。

下面的 ps 命令格式为你提供有关内存消耗最大进程的更多信息。

# ps aux --sort -rss | head

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      4094 10.8  0.0 786792 250784 pts/0   Rl   15:13   3:08 /usr/local/bin/python /usr/local/bin/scrapy crawlall
root      4017 10.6  0.0 781296 245344 pts/0   Sl   15:13   3:06 python start.py
root      4044 10.6  0.0 777784 241760 pts/0   Sl   15:13   3:06 python start_all.py
root       347 53.7  0.0 869020 127732 pts/0   Sl   15:01  21:43 python runsearch.py
root      9795 14.1  0.0 351424 110060 pts/0   Sl   15:29   1:46 /usr/local/bin/python /usr/local/bin/scrapy crawl mongoHeadRecommendDetail
root       207  1.0  0.0 663680 100452 pts/0   S    14:58   0:27 python rundouban.py
root      8900  2.5  0.0 416604 99076 pts/0    Sl   15:27   0:22 /usr/local/bin/python /usr/local/bin/scrapy crawl channel_recommend
root      9051  2.4  0.0 413652 97940 pts/0    Sl   15:27   0:20 /usr/local/bin/python /usr/local/bin/scrapy crawl iqiyi_detail
root      6232 26.2  0.0 540584 78892 pts/0    Sl   15:17   6:21 /usr/local/bin/python /usr/local/bin/scrapy crawlall

使用以下 ps 命令格式可在输出中仅展示有关内存消耗过程的特定信息。

# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head

  PID  PPID %MEM %CPU CMD
 4094  4093  0.0 10.8 /usr/local/bin/python /usr/local/bin/scrapy crawlall
 4017   100  0.0 10.6 python start.py
 4044   100  0.0 10.6 python start_all.py
  347   100  0.0 53.7 python runsearch.py
 9795  9794  0.0 14.1 /usr/local/bin/python /usr/local/bin/scrapy crawl mongoHeadRecommendDetail
  207   100  0.0  1.0 python rundouban.py
 8900  8899  0.0  2.5 /usr/local/bin/python /usr/local/bin/scrapy crawl channel_recommend
 9051  9050  0.0  2.4 /usr/local/bin/python /usr/local/bin/scrapy crawl iqiyi_detail
 6232  6231  0.0 26.1 /usr/local/bin/python /usr/local/bin/scrapy crawlall

如果你只想查看命令名称而不是命令的绝对路径,请使用下面的 ps 命令格式。

# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%mem | head

  PID  PPID %MEM %CPU COMMAND
 4094  4093  0.0 10.8 scrapy
 4017   100  0.0 10.6 python
 4044   100  0.0 10.6 python
  347   100  0.0 53.7 python
 9795  9794  0.0 14.1 scrapy
  207   100  0.0  1.0 python
 8900  8899  0.0  2.5 scrapy
 9051  9050  0.0  2.4 scrapy
 6232  6231  0.0 26.1 scrapy

2) 如何使用 top 命令在 Linux 中查找内存消耗最大的进程

Linux 的 top 命令是用来监视 Linux 系统性能的最好和最知名的命令。它在交互界面上显示运行的系统进程的实时视图。但是,如果要查找内存消耗最大的进程,请 在批处理模式下使用 top 命令

你应该正确地 了解 top 命令输出 以解决系统中的性能问题。

# top -c -b -o +%MEM | head -n 20 | tail -15

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 4094 root      20   0  786792 250784  17176 S  13.3   0.1   3:11.80 /usr/local/bin/python /usr/local/bin/scrapy crawlall
 4017 root      20   0  781296 245344  17128 S  20.0   0.1   3:10.43 python start.py
 4044 root      20   0  777784 241760  17060 S   6.7   0.1   3:09.57 python start_all.py
  347 root      20   0  864896 121756   9400 R  53.3   0.0  22:05.20 python runsearch.py
 9795 root      20   0  351424 110192  17112 S  26.7   0.0   1:52.30 /usr/local/bin/python /usr/local/bin/scrapy crawl mongoHeadRecommendDe+
  207 root      20   0  663680 100452   9344 S   0.0   0.0   0:27.69 python rundouban.py
 8900 root      20   0  416604  99076  17180 S   0.0   0.0   0:23.99 /usr/local/bin/python /usr/local/bin/scrapy crawl channel_recommend
 9051 root      20   0  413652  97940  17080 S   0.0   0.0   0:21.67 /usr/local/bin/python /usr/local/bin/scrapy crawl iqiyi_detail
  287 root      20   0  680836  84836   9276 S  53.3   0.0  21:45.32 python runhotshort.py
 6232 root      20   0  540584  78892  17596 S  13.3   0.0   6:29.85 /usr/local/bin/python /usr/local/bin/scrapy crawlall
 6738 root      20   0  540088  78088  17164 S   0.0   0.0   1:21.48 /usr/local/bin/python /usr/local/bin/scrapy crawlall
 9587 root      20   0  319576  78012  17132 S   0.0   0.0   0:21.64 /usr/local/bin/python /usr/local/bin/scrapy crawl mongoHeadRecommend
  370 root      20   0  375324  74100   9204 S   0.0   0.0   0:27.03 python runweibo.py

如果你只想查看命令名称而不是命令的绝对路径,请使用下面的 top 命令格式。

# top -b -o +%MEM | head -n 20 | tail -15

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 4094 root      20   0  786792 250784  17176 S  18.8   0.1   3:13.45 scrapy
 4017 root      20   0  781296 245344  17128 S  12.5   0.1   3:11.66 python
 4044 root      20   0  777784 241760  17060 S  12.5   0.1   3:10.89 python
  347 root      20   0  837792 127168   9400 R  50.0   0.0  22:11.08 python
 9795 root      20   0  351424 110192  17112 S  12.5   0.0   1:54.07 scrapy
  207 root      20   0  663680 100452   9344 S   0.0   0.0   0:27.69 python
 8900 root      20   0  416604  99076  17180 S   0.0   0.0   0:24.19 scrapy
 9051 root      20   0  413652  97940  17080 S   0.0   0.0   0:22.01 scrapy
  287 root      20   0  685188  89200   9276 R  43.8   0.0  21:52.67 python
 6232 root      20   0  540584  78892  17596 S  18.8   0.0   6:33.94 scrapy
 6738 root      20   0  540088  78088  17164 S   0.0   0.0   1:22.23 scrapy
 9587 root      20   0  319576  78012  17132 S   0.0   0.0   0:22.02 scrapy
  370 root      20   0  375324  74100   9204 S   0.0   0.0   0:27.03 python
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐