使用哪个 Linux 命令来了解每个进程消耗了多少 RAM

使用哪个 Linux 命令来了解每个进程消耗了多少 RAM

我已经尝试topPS命令,但我无法找到每个进程使用的 RAM。

top 命令说使用了 240MB RAM,但所有进程的内存显示为 0%,同样如此ps。我想知道哪个进程消耗了所有 240MB RAM。

是否有任何命令/脚本可以按增加 RAM 使用率的顺序对正在运行的进程进行排序,以便我查看。此外,我发现读取字节和 KB 非常困难。有没有办法将这些单位更改为 MB

请帮忙

答案1

ps -eo rss,pid,user,command --sort -size | \
awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | \
egrep -v 0.00

印刷:

     6.65 Mb /usr/sbin/mysqld
     0.75 Mb rsyslogd -c4
    38.59 Mb /usr/sbin/apache2 -k start
    37.95 Mb /usr/sbin/apache2 -k start
    34.38 Mb /usr/sbin/apache2 -k start
    33.35 Mb /usr/sbin/apache2 -k start
    31.43 Mb /usr/sbin/apache2 -k start
     2.38 Mb /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
     0.61 Mb /usr/sbin/nova-agent -q -p /var/run/nova-agent.pid -o /var/log/nova-agent.log -l info /usr/share/nova-agent/nova-agent.py
     3.00 Mb /usr/sbin/apache2 -k start
     1.71 Mb sshd: root@notty
     0.36 Mb sshd: root@pts/0
     1.10 Mb ps -eo rss,pid,user,command --sort -size
     1.40 Mb /usr/lib/openssh/sftp-server
     0.59 Mb /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 103:105
     0.08 Mb /usr/sbin/sshd -D
     0.21 Mb /sbin/init
     1.18 Mb -bash
     0.28 Mb cron
     0.88 Mb qmgr -l -t fifo -u

请记住,free 和 top 将显示“缓存”内存,因此您无法判断实际使用和空闲的内存量。从技术上讲,它对系统来说是免费的,尽管它可能需要转储缓存才能使用它。我发现 free 不太有用,而 top 只稍微有用一点(而且 top 通常会消耗我所有的空闲 RAM,哈哈)。

答案2

运行“系统监视器”,有一个进程选项卡,可以按内存使用情况排序。我不熟悉 centos,它是预装在我使用的 Ubuntu 上的。

答案3

如果您只是执行 top 命令,它将以占系统总内存的百分比的形式显示内存使用情况。如果所有内容都显示为 0,则表示没有任何东西占用了相当大比例的内存。这实际上并不罕见。假设您的服务器有 8 GB 的内存,则 1% 就是 80 MB。240 MB 完全有可能由一堆使用不到 40 MB 内存的东西组成。因此百分比对您没有帮助。

如果你做了

顶部-M

它应该以任何适用的单位输出实际的内存使用情况。

相关内容