这篇文章主要介绍了Linux中如何安装并使用Smem,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

smem是一款命令行下的内存使用情况报告工具,他能够给用户提供Linux系统下的内存使用的多种报告,seme与现有工具不同的是,可以报告PSS情况(实际使用的物理内存(PSS),从而可以衡量虚拟内存系统库和应用程序所占用的内存数量。

安装 Smem – Linux工具

安装条件:

现代内核(版本号高于2.6.27)较新的Python版本(2.4及以后版本)可选的matplotlib库用于生成图表

对于当今的大多数的 Linux 发行版而言,内核版本和 Python 的版本都能够满足需要,所以仅需要为生成良好的图表安装 matplotlib 库。

RHEL, CentOS 和 Fedora

首先启用 EPEL (Extra Packages for Enterprise Linux)软件源,然后按照下列步骤操作:

#yuminstallsmempython-matplotlibpython-tk

Debian 和 Ubuntu

$sudoapt-getinstallsmem

Linux Mint

$sudoapt-getinstallsmempython-matplotlibpython-tk

Arch Linux

使用此”https://www.archlinux.org/packages/community/i686/smem/”的AUR 仓库。

Smem–Linux的使用

内存使用情况

$sudosmemPIDUserCommandSwapUSSPSSRSS6367tecmintcat010014517846368tecmintcat010014716762864tecmint/usr/bin/ck-launch-session014416517807656tecmintgnome-pty-helper015617818325758tecmintgnome-pty-helper015617919161441root/sbin/getty-838400tty2015218420521434root/sbin/getty-838400tty5015618720601444root/sbin/getty-838400tty3015618720601432root/sbin/getty-838400tty4015618821241452root/sbin/getty-838400tty6016419620642619root/sbin/getty-838400tty1016419621363544tecmintsh-c/usr/lib/linuxmint/mi021222415401504rootacpid-c/etc/acpi/events-022023616043311tecmintsyndaemon-i0.5-K-R025229225563143rtkit/usr/lib/rtkit/rtkit-daemon030032625481588rootcron029233323441589avahiavahi-daemon:chroothelpe012433416321523root/usr/sbin/irqbalance03163432096585rootupstart-socket-bridge--dae032835118203033tecmint/usr/bin/dbus-launch--exit032836021601346rootupstart-file-bridge--daemo034837117762607root/usr/bin/xdm018837823681635kernoops/usr/sbin/kerneloops03523862684344rootupstart-udev-bridge--daemo040042721322960tecmint/usr/bin/ssh-agent/usr/bin04804859923468tecmint/bin/dbus-daemon--config-f034451532841559avahiavahi-daemon:running[tecm028451731087289postfixpickup-l-tunix-u-c028853428082135root/usr/lib/postfix/master035257628722436postfixqmgr-l-tunix-u036060628841521root/lib/systemd/systemd-logind060065032762222nobody/usr/sbin/dnsmasq--no-reso06046693288....

查看用户进程占用内存情况

普通用户运行 smem,显示由该用户的进程的占用情况,并按照 PSS 的值升序排列。

$smemPIDUserCommandSwapUSSPSSRSS6367tecmintcat010014517846368tecmintcat010014716762864tecmint/usr/bin/ck-launch-session014416617803544tecmintsh-c/usr/lib/linuxmint/mi021222415403311tecmintsyndaemon-i0.5-K-R025229225563033tecmint/usr/bin/dbus-launch--exit032836021603468tecmint/bin/dbus-daemon--config-f034451532843122tecmint/usr/lib/gvfs/gvfsd065680155523471tecmint/usr/lib/at-spi2-core/at-sp070886459923396tecmint/usr/lib/gvfs/gvfs-mtp-volu080491462043208tecmint/usr/lib/x86_64-linux-gnu/i0892101261883380tecmint/usr/lib/gvfs/gvfs-afc-volu0820102463963034tecmint//bin/dbus-daemon--fork--0920108130403365tecmint/usr/lib/gvfs/gvfs-gphoto2-0972109960523228tecmint/usr/lib/gvfs/gvfsd-trash-0980115366483107tecmint/usr/lib/dconf/dconf-servic01212128353766399tecmint/opt/google/chrome/chrome-01441409107323478tecmint/usr/lib/x86_64-linux-gnu/g01724182063207365tecmint/usr/lib/gvfs/gvfsd-http--01352188487046937tecmint/opt/libreoffice5.0/program01140232850403194tecmint/usr/lib/x86_64-linux-gnu/p019562405142286373tecmint/opt/google/chrome/nacl_hel02324254189083313tecmint/usr/lib/gvfs/gvfs-udisks2-02460275487363464tecmint/usr/lib/at-spi2-core/at-sp02684282379205771tecmintssh-p4521tecmnt765@212.702544286465405759tecmint/bin/bash02416292356403541tecmint/usr/bin/python/usr/bin/mi02584300872487657tecmintbash02516305560283127tecmint/usr/lib/gvfs/gvfsd-fuse/r03024312680323205tecmintmate-screensaver025203331180723171tecmint/usr/lib/mate-panel/notific028603495171403030tecmintx-session-manager044004879175003197tecmintmate-volume-control-applet03860522623736...

查看系统占用内存的情况

$sudosmem-wAreaUsedCacheNoncachefirmware/hardware000kernelimage000kerneldynamicmemory14253201291412133908userspacememory22153684516081763760freememory442493644249360

每一个用户的内存使用情况

$sudosmem-uUserCountSwapUSSPSSRSSrtkit103003262548kernoops103523852684avahi204088514740postfix2064811405692messagebus10101211733320syslog10139614193232www-data205100657213580mpd107416830212896nobody2040241130524728root390323876353418496520tecmint640165288818156992763112

按照映射显示内存使用情况

$sudosmem-mMapPIDsAVGPSSPSS/dev/fb0100/home/tecmint/.cache/fontconfig/7ef2298f1800/home/tecmint/.cache/fontconfig/c57959a11800/home/tecmint/.local/share/mime/mime.cac1500/opt/google/chrome/chrome_material_100_p900/opt/google/chrome/chrome_material_200_p900/usr/lib/x86_64-linux-gnu/gconv/gconv-mo4100/usr/share/icons/Mint-X-Teal/icon-theme.1500/var/cache/fontconfig/0c9eb80ebd1c36541e2000/var/cache/fontconfig/0d8c3b2ac0904cb8a52000/var/cache/fontconfig/1ac9eb803944fde1462000/var/cache/fontconfig/3830d5c3ddfd5cd38a2000/var/cache/fontconfig/385c0604a188198f042000/var/cache/fontconfig/4794a0821666d791902000/var/cache/fontconfig/56cf4f4769d0f4abc82000/var/cache/fontconfig/767a8244fc0220cfb52000/var/cache/fontconfig/8801497958630a81b72000/var/cache/fontconfig/99e8ed0e538f840c562000/var/cache/fontconfig/b9d506c9ac06c20b432000/var/cache/fontconfig/c05880de57d1f5e9482000/var/cache/fontconfig/dc05db6664285cc2f12000/var/cache/fontconfig/e13b20fdb08344e0e62000/var/cache/fontconfig/e7071f4a29fa870f432000....

筛选 smem 的输出

筛选出用户名的信息

用户名筛选输出的信息,-u 或者是 –userfilter=”regex” 选项

$sudosmem-uUserCountSwapUSSPSSRSSrtkit103003262548kernoops103523852684avahi204088514740postfix2064811405692messagebus10101211733320syslog10140014233236www-data205100657213580mpd107416830212896nobody2040241130524728root390323804353374496552tecmint640170890018717662819212

筛选出进程的信息

进程名称筛选输出信息,使用-P 或者是–processfilter=”regex”选项

$sudosmem--processfilter="firefox"PIDUserCommandSwapUSSPSSRSS9212rootsudosmem--processfilter=f01172143448569213root/usr/bin/python/usr/bin/sm073687793119844424tecmint/usr/lib/firefox/firefox0931732937590961504

-c 或者是 –columns 选项设置格式

使用 -c 或者是 –columns 选项,就像下面的命令这样:

$sudosmem-c"nameuserpssrss"NameUserPSSRSScattecmint1451784cattecmint1471676ck-launch-sessitecmint1651780gnome-pty-helpetecmint1781832gnome-pty-helpetecmint1791916gettyroot1842052gettyroot1872060gettyroot1872060gettyroot1882124gettyroot1962064gettyroot1962136shtecmint2241540acpidroot2361604syndaemontecmint2962560rtkit-daemonrtkit3262548cronroot3332344avahi-daemonavahi3341632irqbalanceroot3432096upstart-socket-root3511820dbus-launchtecmint3602160upstart-file-brroot3711776xdmroot3782368kerneloopskernoops3862684upstart-udev-brroot4272132ssh-agenttecmint485992...

以百分比的形式报告内存使用情况-p

$sudosmem-pPIDUserCommandSwapUSSPSSRSS6367tecmintcat0.00%0.00%0.00%0.02%6368tecmintcat0.00%0.00%0.00%0.02%9307tecmintsh-c{sudo/usr/lib/linux0.00%0.00%0.00%0.02%2864tecmint/usr/bin/ck-launch-session0.00%0.00%0.00%0.02%3544tecmintsh-c/usr/lib/linuxmint/mi0.00%0.00%0.00%0.02%5758tecmintgnome-pty-helper0.00%0.00%0.00%0.02%7656tecmintgnome-pty-helper0.00%0.00%0.00%0.02%1441root/sbin/getty-838400tty20.00%0.00%0.00%0.03%1434root/sbin/getty-838400tty50.00%0.00%0.00%0.03%1444root/sbin/getty-838400tty30.00%0.00%0.00%0.03%1432root/sbin/getty-838400tty40.00%0.00%0.00%0.03%1452root/sbin/getty-838400tty60.00%0.00%0.00%0.03%2619root/sbin/getty-838400tty10.00%0.00%0.00%0.03%1504rootacpid-c/etc/acpi/events-0.00%0.00%0.00%0.02%3311tecmintsyndaemon-i0.5-K-R0.00%0.00%0.00%0.03%3143rtkit/usr/lib/rtkit/rtkit-daemon0.00%0.00%0.00%0.03%1588rootcron0.00%0.00%0.00%0.03%1589avahiavahi-daemon:chroothelpe0.00%0.00%0.00%0.02%1523root/usr/sbin/irqbalance0.00%0.00%0.00%0.03%585rootupstart-socket-bridge--dae0.00%0.00%0.00%0.02%3033tecmint/usr/bin/dbus-launch--exit0.00%0.00%0.00%0.03%....

最后一行汇总信息

$sudosmem-tPIDUserCommandSwapUSSPSSRSS6367tecmintcat010013917846368tecmintcat010014116769307tecmintsh-c{sudo/usr/lib/linux09615815082864tecmint/usr/bin/ck-launch-session014416317803544tecmintsh-c/usr/lib/linuxmint/mi010817015405758tecmintgnome-pty-helper015617619167656tecmintgnome-pty-helper015617618321441root/sbin/getty-838400tty2015218120521434root/sbin/getty-838400tty5015618420601444root/sbin/getty-838400tty3015618420601432root/sbin/getty-838400tty4015618521241452root/sbin/getty-838400tty6016419320642619root/sbin/getty-838400tty1016419321361504rootacpid-c/etc/acpi/events-022023216043311tecmintsyndaemon-i0.5-K-R026029825643143rtkit/usr/lib/rtkit/rtkit-daemon030032425481588rootcron029232623441589avahiavahi-daemon:chroothelpe012433216321523root/usr/sbin/irqbalance03163402096585rootupstart-socket-bridge--dae032834918203033tecmint/usr/bin/dbus-launch--exit032835921601346rootupstart-file-bridge--daemo034837017762607root/usr/bin/xdm018837523681635kernoops/usr/sbin/kerneloops03523842684344rootupstart-udev-bridge--daemo04004262132.....-------------------------------------------------------------------------------134110217142823762663587972

简要以图形的形式报告内存的使用情况

条形图

生成一张进程的 PSS 和 RSS 值的条状图,纵坐标为每一个进程的 PSS 和 RSS 值,横坐标为 root 用户的所有进程(的 ID):

$sudosmem--userfilter="root"--barpid-c"pssrss"

饼形图

也可以生成进程及其 PSS 和 RSS 占用量的饼状图。以下的命令将会输出一张 root 用户的所有进程的饼状图。

–pie name 意思为以各个进程名字为标签,-s选项用来以 PSS 的值排序。

$sudosmem--userfilter="root"--piename-spss


感谢你能够认真阅读完这篇文章,希望小编分享的“Linux中如何安装并使用Smem”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!