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

Mir*_*age 3 linux centos

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

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

是否有任何命令 which / script 可以按增加 RAM 使用量的顺序对正在运行的进程进行排序,以便我可以看到。我也发现很难读取字节和 KB。有没有办法将这些单位更改为 MB

请帮忙

Jam*_*mes 5

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
Run Code Online (Sandbox Code Playgroud)

印刷:

     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
Run Code Online (Sandbox Code Playgroud)

请记住, free 和 top 将显示“缓存”内存,因此您将无法判断实际使用了多少和空闲了多少。它在技术上对系统是免费的,尽管它可能必须转储缓存才能使用它。我发现 free 不是那么有用,而 top 只是稍微有用一点(加上 top 通常会消耗我拥有的任何可用 RAM,哈哈)。