很多次,你可能遇见过系统消耗了过多的内存。如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程。我相信,你可能已经运行了下文中的命令以进行检查。如果没有,那你尝试过哪些其他的命令?我希望你可以在评论中更新这篇文章,它可能会帮助其他用户。
使用 top 命令 和 ps 命令 可以轻松的识别这种情况。我过去经常同时使用这两个命令,两个命令得到的结果是相同的。所以我建议你从中选择一个喜欢的使用就可以。
1) 如何使用 ps 命令在 Linux 中查找内存消耗最大的进程
ps 命令用于报告当前进程的快照。ps 命令的意思是“进程状态”。这是一个标准的 Linux 应用程序,用于查找有关在 Linux 系统上运行进程的信息。
它用于列出当前正在运行的进程及其进程 ID(PID)、进程所有者名称、进程优先级(PR)以及正在运行的命令的绝对路径等。
下面的 ps 命令格式为你提供有关内存消耗最大进程的更多信息。
#psaux--sort-rss|head
USER PID%CPU%MEM VSZ RSS TTY STAT START TIME COMMAND
mysql10643.25.4886076209988?SslOct2562:40/usr/sbin/mysqld
varnish233960.02.9286492115616?SLlOct250:42/usr/sbin/varnishd-P/var/run/varnish.pid-f/etc/varnish/default.vcl-a:82-T127.0.0.1:6082-S/etc/varnish/secret-s malloc,256M
named11050.02.7311712108204?SslOct250:16/usr/sbin/named-u named-c/etc/named.conf
nobody233770.22.315309689432?SOct254:35nginx:worker process
nobody233760.12.114709683316?SOct252:18nginx:worker process
root233750.01.713102866764?SsOct250:01nginx:master process/usr/sbin/nginx-c/etc/nginx/nginx.conf
nobody233780.01.613098864592?SOct250:00nginx:cache manager process
root11350.00.98670837572?S05:370:20cwpsrv:worker process
root11330.00.98670837544?S05:370:05cwpsrv:worker process
使用以下 ps 命令格式可在输出中仅展示有关内存消耗过程的特定信息。
#ps-eo pid,ppid,%mem,%cpu,cmd--sort=-%mem|head
PID PPID%MEM%CPU CMD
106415.43.2/usr/sbin/mysqld
23396233862.90.0/usr/sbin/varnishd-P/var/run/varnish.pid-f/etc/varnish/default.vcl-a:82-T127.0.0.1:6082-S/etc/varnish/secret-s malloc,256M
110512.70.0/usr/sbin/named-u named-c/etc/named.conf
23377233752.30.2nginx:worker process
23376233752.10.1nginx:worker process
36259771.90.0/usr/local/bin/php-cgi/home/daygeekc/public_html/index.php
2337511.70.0nginx:master process/usr/sbin/nginx-c/etc/nginx/nginx.conf
23378233751.60.0nginx:cache manager process
113530340.90.0cwpsrv:worker process
如果你只想查看命令名称而不是命令的绝对路径,请使用下面的 ps 命令格式。
#ps-eo pid,ppid,%mem,%cpu,comm--sort=-%mem|head
PID PPID%MEM%CPU COMMAND
106415.43.2mysqld
23396233862.90.0cache-main
110512.70.0named
23377233752.30.2nginx
23376233752.10.1nginx
2337511.70.0nginx
23378233751.60.0nginx
113530340.90.0cwpsrv
113330340.90.0cwpsrv
2) 如何使用 top 命令在 Linux 中查找内存消耗最大的进程
Linux 的 top 命令是用来监视 Linux 系统性能的最好和最知名的命令。它在交互界面上显示运行的系统进程的实时视图。但是,如果要查找内存消耗最大的进程,请 在批处理模式下使用 top 命令。
你应该正确地 了解 top 命令输出 以解决系统中的性能问题。
#top-c-b-o+%MEM|head-n20|tail-15
PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+COMMAND
1064mysql2008860762097408388S0.05.462:41.20/usr/sbin/mysqld
23396varnish20028649211561683572S0.03.00:42.24/usr/sbin/varnishd-P/var/run/varnish.pid-f/etc/varnish/default.vcl-a:82-T127.0.0.1:6082-S/etc/varnish/secret-s malloc,256M
1105named2003117121082042424S0.02.80:16.41/usr/sbin/named-u named-c/etc/named.conf
23377nobody200153240894322432S0.02.34:35.74nginx:worker process
23376nobody200147096833162416S0.02.12:18.09nginx:worker process
23375root200131028667641616S0.01.70:01.07nginx:master process/usr/sbin/nginx-c/etc/nginx/nginx.conf
23378nobody20013098864592592S0.01.70:00.51nginx:cache manager process
1135root20086708375722252S0.01.00:20.18cwpsrv:worker process
1133root20086708375442212S0.01.00:05.94cwpsrv:worker process
3034root20086704367401452S0.00.90:00.09cwpsrv:master process/usr/local/cwpsrv/bin/cwpsrv
1067nobody2001356200315882352S0.00.80:56.06/usr/local/apache/bin/httpd-k start
977nobody2001356088312682372S0.00.80:30.44/usr/local/apache/bin/httpd-k start
968nobody2001356216305442348S0.00.80:19.95/usr/local/apache/bin/httpd-k start
如果你只想查看命令名称而不是命令的绝对路径,请使用下面的 top 命令格式。
#top-b-o+%MEM|head-n20|tail-15
PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+COMMAND
1064mysql2008860762103408388S6.75.462:40.93mysqld
23396varnish20028649211561683572S0.03.00:42.24cache-main
1105named2003117121082042424S0.02.80:16.41named
23377nobody200153240894322432S13.32.34:35.74nginx
23376nobody200147096833162416S0.02.12:18.09nginx
23375root200131028667641616S0.01.70:01.07nginx
23378nobody20013098864592592S0.01.70:00.51nginx
1135root20086708375722252S0.01.00:20.18cwpsrv
1133root20086708375442212S0.01.00:05.94cwpsrv
3034root20086704367401452S0.00.90:00.09cwpsrv
1067nobody2001356200315882352S0.00.80:56.04httpd
977nobody2001356088312682372S0.00.80:30.44httpd
968nobody2001356216305442348S0.00.80:19.95httpd
3) 奖励技巧:如何使用 ps_mem 命令在 Linux 中查找内存消耗最大的进程
ps_mem 程序 用于显示每个程序(而不是每个进程)使用的核心内存。该程序允许你检查每个程序使用了多少内存。它根据程序计算私有和共享内存的数量,并以最合适的方式返回已使用的总内存。
它使用以下逻辑来计算内存使用量。总内存使用量 = sum(用于程序进程的专用内存使用量) + sum(用于程序进程的共享内存使用量)。
#ps_mem
Private+Shared=RAM usedProgram
128.0KiB+27.5KiB=155.5KiBagetty
228.0KiB+47.0KiB=275.0KiBatd
284.0KiB+53.0KiB=337.0KiBirqbalance
380.0KiB+81.5KiB=461.5KiBdovecot
364.0KiB+121.5KiB=485.5KiBlog
520.0KiB+65.5KiB=585.5KiBauditd
556.0KiB+60.5KiB=616.5KiBsystemd-udevd
732.0KiB+48.0KiB=780.0KiBcrond
296.0KiB+524.0KiB=820.0KiBavahi-daemon(2)
772.0KiB+51.5KiB=823.5KiBsystemd-logind
940.0KiB+162.5KiB=1.1MiBdbus-daemon
1.1MiB+99.0KiB=1.2MiBpure-ftpd
1.2MiB+100.5KiB=1.3MiBmaster
1.3MiB+198.5KiB=1.5MiBpickup
1.3MiB+198.5KiB=1.5MiBbounce
1.3MiB+198.5KiB=1.5MiBpipe
1.3MiB+207.5KiB=1.5MiBqmgr
1.4MiB+198.5KiB=1.6MiBcleanup
1.3MiB+299.5KiB=1.6MiBtrivial-rewrite
1.5MiB+145.0KiB=1.6MiBconfig
1.4MiB+291.5KiB=1.6MiBtlsmgr
1.4MiB+308.5KiB=1.7MiBlocal
1.4MiB+323.0KiB=1.8MiBanvil(2)
1.3MiB+559.0KiB=1.9MiBsystemd-journald
1.8MiB+240.5KiB=2.1MiBproxymap
1.9MiB+322.5KiB=2.2MiBauth
2.4MiB+88.5KiB=2.5MiBsystemd
2.8MiB+458.5KiB=3.2MiBsmtpd
2.9MiB+892.0KiB=3.8MiBbash(2)
3.3MiB+555.5KiB=3.8MiBNetworkManager
4.1MiB+233.5KiB=4.3MiBvarnishd
4.0MiB+662.0KiB=4.7MiBdhclient(2)
4.3MiB+623.5KiB=4.9MiBrsyslogd
3.6MiB+1.8MiB=5.5MiBsshd(3)
5.6MiB+431.0KiB=6.0MiBpolkitd
13.0MiB+546.5KiB=13.6MiBtuned
22.5MiB+76.0KiB=22.6MiBlfd-sleeping
30.0MiB+6.2MiB=36.2MiBphp-fpm(6)
5.7MiB+33.5MiB=39.2MiBcwpsrv(3)
20.1MiB+25.3MiB=45.4MiBhttpd(5)
104.7MiB+156.0KiB=104.9MiBnamed
112.2MiB+479.5KiB=112.7MiBcache-main
69.4MiB+58.6MiB=128.0MiBnginx(4)
203.4MiB+309.5KiB=203.7MiBmysqld
---------------------------------
775.8MiB
=================================
【编辑推荐】
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0