我已经尝试top
并PS
命令,但我无法找到每个进程使用的 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
它应该以任何适用的单位输出实际的内存使用情况。