有一些命令可以用来查看Linux系统中的内存使用情况,下面是一些比较好的命令。有很多工具可以查看Linux系统中的内存使用情况。一些命令被广泛使用,例如free、ps。其他命令允许以各种方式显示系统性能统计信息,例如top。在本文中,我们将介绍一些命令来帮助您确定当前哪些用户或进程占用了最多的内存资源。以下是一些按进程查看内存使用情况的命令:按进程查看内存使用情况使用toptop是查看内存使用情况的最佳命令之一。为了查看哪个进程占用内存最多,一个简单的方法是启动top,然后按shift+m??,这样就可以查看内存占用百分比从高到低排序的进程。当您按下shift+m??时,您的top应该得到类似于以下的输出:$toptop-09:39:34up5days,3min,3users,loadaverage:4.77,4.43,3.72Tasks:251total,3running,247睡眠,1停止,0zombie%Cpu(s):50.6us,35.9sy,0.0ni,13.4id,0.2wa,0.0hi,0.0si,0.0stMiBMem:5944.4total,128.9free,2509.3used,3306.2buff/cacheMiBSwap:总计2048.0,2045.7免费,2.2使用。3053.5可用mempid用户prnivirssress%cpu%memtime+命令400nemo2003309580550188168372S0.39.01:33.27WebContent32469Nemo2003492840140984S6.07.14:11.16WebContent342nemo2002848520352288118972S10.35.84:04.89WebContent2389nemo200177441223670090044S39.73.99:32.64vlc29527nemo200273579222598084744S9.63.73:02.35gnome-shell30497NEMO3010108847615963688884S0.02.60:11.99UPDATE-MANAGER30058NEMO200108946414095233128S0.02.30:04.5831304T0.01.70:00.28vlc1713nemo20023743967958861452S0.01.30:00.49WebContent29306nemo2003896687437654340S2.31.20:57.25Xorg32739nemo2002895285890034480S1.01.01:04.08RDDProcess29732nemo2007891965772442428S0.00.90:00.38evolution-alarm2373root200150408570009924S0.30.910:15.35nessusd注意%MEM排序列表的大小取决于你的窗口大小,但占用内存最多该过程将显示在列表的顶部。使用psps命令中的一列来显示每个进程的内存使用情况。要显示和查看哪个进程使用的内存最多,可以将ps命令的结果传递给sort命令。这是一个有用的例子:$psaux|排序-rnk4|头-5nemo4003.49.23309580563336?Sl08:591:36/usr/lib/firefox/firefox-contentproc-childID6-isForBrowser-prefsLen9086-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo324698.27.73492840469516?Sl08:544:15/usr/lib/firefox/firefox-new-windownemo325428.97.62875428462720?Sl08:554:36/usr/lib/firefox/firefox-contentproc-childID2-isForBrowser-prefsLen1-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo3429.95.92854664363528?Sl08:594:44/usr/lib/firefox/firefox-contentproc-childID5-isForBrowser-prefsLen8763-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo238939.53.81774412236116pts/1Sl+09:1512:21vlcvideos/edge_computing.mp4在上面的示例中(文本已被截断),排序命令使用了-r选项(反向)、-n选项(数值)、-k选项(关键字)),让sort命令将ps命令的结果按照第四列(内存占用)的数字倒序排序输出,如果我们先显示ps命令的标题会更容易看。$辅助|头-1;ps辅助|排序-rnk4|head-5USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDnemo4003.49.23309580563336?Sl08:591:36/usr/lib/firefox/firefox-contentproc-childID6-isForBrowser-prefsLen9086-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo324698.27.73492840469516?Sl08:544:15/usr/lib/firefox/firefox-new-windownemo325428.97.62875428462720?Sl08:554:36/usr/lib/firefox/firefox-contentproc-childID2-isForBrowser-prefsLen1-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo3429.95.92854664363528?Sl08:594:44/usr/lib/firefox/firefox-contentproc-childID5-isForBrowser-prefsLen8763-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo238939.53.81774412236116pts/1Sl+09:1512:21vlcvideos/edge_computing.mp4如果你喜欢这个命令,你可以用下面的命令为他指定一个别名,如果你想一直使用它,不要忘记将此命令添加到您的~/.bashrc文件$aliasmem-by-proc="psaux|head-1;psaux|sort-rnk4"以下是一些查看用户内存使用情况的命令:按用户查看内存使用情况使用top查看用户内存使用情况有点复杂,因为您需要找到一种方法将用户拥有的所有进程统计为单个内存使用情况。如果只想查看单个用户进程的使用情况,可以像上面一样使用top命令。只要加上-U选项,在后面指定你要查看的用户名,然后按shift+m??就可以根据内存使用情况查看了。$top-Unemotop-10:16:33最多5天,40分钟,3个用户,平均负载:1.91、1.82、2.15任务:总共253个,2个运行,250个睡眠,1个停止,0zombie%Cpu(s):28.5us,36.8sy,0.0ni,34.4id,0.3wa,0.0hi,0.0si,0.0stMiB内存:总计5944.4,免费224.1,已使用2752.9,2967.4buff/cacheMiB交换:总计2048.0,已免费2042.7,52812.0availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND400nemo2003315724623748165440S1.010.21:48.78WebContent32469nemo2003629380607492161688S2.310.06:06.89firefox32542nemo2002886700404980136648S5.66.76:50.01Web内容342NEMO2002922248375784375784116096S19.56.28:16.07Web内容2389NEMO2001762960gnome-shell30497nemo3010108847615637285620S0.02.60:11.99update-manager30058nemo200108946413816030336S0.02.30:04.62gnome-software32533nemo200238908810253276808S0.01.70:01.79WebExtensions使用ps你依旧可以使用ps命令通过内存使用Listauser'sprocessesbyconditionInthisexample,wewillusethegrepcommandtofilterallprocessesforacertainuser.$辅助|头-1;ps辅助|grep^nemo|排序-rnk4|moreUSERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDnemo324697.111.53724364701388?Sl08:547:21/usr/lib/firefox/firefox-new-windownemo4002.08.93308556543232?Sl08:592:01/usr/lib/firefox/firefox-contentproc-childID6-isForBrowser-prefsLen9086-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo325427.97.12903084436196?Sl08:558:07/usr/lib/firefox/firefox-contentproc-childID2-isForBrowser-prefsLen1-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser32469truetabnemo34210.87.02941056426484?Rl08:5910:45/usr/lib/firefox/firefox-contentproc-childID5-isForBrowser-prefsLen8763-prefMapSize210653-parentBuildID20200107212822-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/浏览器32469truetabnemo238916.93.81762960234644pts/1Sl+09:1513:57vlcvideos/edge_computing.mp4nemo295273.93.72736924227448?ssl08:504:11g/usr如果要将某个用户的内存使用情况与其他用户进行比较,则命令组合会更加复杂。在这种情况下,创建并排序用户的总内存使用量是一个很好的方法,但它需要做更多的工作并且涉及到很多命令。在下面的脚本中,我们使用psaux|获取用户列表。grep-v命令|awk'{print$1}'|排序-u命令。这包括系统用户,例如syslog。我们对每个任务使用awk命令来收集每个用户的总内存使用情况。在最后一步中,我们显示每个用户的总内存使用量(按从大到小的顺序)。#!/bin/bashstats=""echo"%user"echo"==============="#在`psaux|中为用户收集数据grep-v命令|awk'{print$1}'|sort-u`dostats="$stats\n`psaux|egrep^$user|awk'BEGIN{total=0};\{total+=$4};END{printtotal,$1}'`"done#按数字排序数据(最大的优先)echo-e$stats|grep-v^$|排序-rn|head此脚本的输出可能如下所示:$./show_user_mem_usage%user============69.6nemo5.8root0.5www-data0.3shs0.2whoopsie0.2systemd+0.2colord0.2clamav0syslog0rtkit在Linux上有很多方法可以报告内存使用情况。您可以使用一些精心设计的工具和命令来查看和获取某个进程或用户占用的最多内存。
