0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文掌握Linux服务器监控命令

dyquk4xk2p3d 来源:网络技术联盟站 2023-03-26 10:30 次阅读

1. CPU

cat/proc/cpuinfo
#物理CPU个数
cat/proc/cpuinfo|grep'physicalid'|sort|uniq|wc-l
#每个CPU核心数
cat/proc/cpuinfo|grep'coreid'|sort|uniq|wc-l
#逻辑CPU
cat/proc/cpuinfo|grep'processor'|sort|uniq|wc-l
#mpstat
mpstat
mpstat210

2. 内存

cat/proc/meminfo
free-gt
df-hT
du-csh./*

操作系统 IPC 共享内存/队列:

ipcs#(shmems,queues,semaphores)

平时我们经常需要监控内存的使用状态,常用的命令有free、vmstat、top、dstat -m等。

2.1 free

>free-h
totalusedfreesharedbufferscached
Mem:7.7G6.2G1.5G17M33M184M
-/+buffers/cache:6.0G1.7G
Swap:24G581M23G

各行数据含义

第一行Mem:

total:内存总数7.7G,物理内存大小,就是机器实际的内存

used:已使用内存6.2G,这个值包括了cached和应用程序实际使用的内存

free:空闲的内存1.5G,未被使用的内存大小

shared:共享内存的大小,17M

buffers:被缓冲区占用的内存大小,33M

cached:被缓存占用的内存大小,184M

其中有:

total=used+free

第二行-/+ buffers/cache,代表应用程序实际使用的内存

前一个值表示used - buffers/cached,表示应用程序实际使用的内存

后一个值表示free + buffers/cached,表示理论上都可以被使用的内存

可以看到,这两个值加起来也是total

第三行swap,代表交换分区的使用情况:总量、使用的和未使用的

缓存 cache

cache代表缓存,当系统读取文件时,会先把数据从硬盘读到内存里,因为硬盘比内存慢很多,所以这个过程会很耗时。

为了提高效率,Linux 会把读进来的文件在内存中缓存下来(局部性原理),即使程序结束,cache 也不会被自动释放。因此,当有程序进行大量的读文件操作时,就会发现内存使用率升高了。

当其他程序需要使用内存时,Linux 会根据自己的缓存策略(例如 LRU)将这些没人使用的 cache 释放掉,给其他程序使用,当然也可以手动释放缓存:

echo1>/proc/sys/vm/drop_caches

缓冲区 buffer

考虑内存写文件到硬盘的场景,因为硬盘太慢了,如果内存要等待数据写完了之后才继续后面的操作,效率会非常低,也会影响程序的运行速度,所以就有了缓冲区buffer。

当内存需要写数据到硬盘中时会先放到 buffer 里面,内存很快把数据写到 buffer 中,可以继续其他工作,而硬盘可以在后台慢慢读出 buffer 中的数据并保存起来,这样就提高了读写的效率。

例如把电脑中的文件拷贝到 U 盘时,如果文件特别大,有时会出现这样的情况:明明看到文件已经拷贝完,但系统还是会提示 U 盘正在使用中。这就是 buffer 的原因:拷贝程序虽然已经把数据放到 buffer 中,但是还没有全部写入到 U 盘中

同样的,可以使用sync命令来手动flush buffer中的内容:

>sync--help

Usage:sync[OPTION][FILE]...
Synchronizecachedwritestopersistentstorage

Ifoneormorefilesarespecified,synconlythem,
ortheircontainingfilesystems.

-d,--datasynconlyfiledata,nounneededmetadata
-f,--file-systemsyncthefilesystemsthatcontainthefiles
--helpdisplaythishelpandexit
--versionoutputversioninformationandexit

GNUcoreutilsonlinehelp:
Fulldocumentationat:
oravailablelocallyvia:info'(coreutils)syncinvocation'

交换分区 swap

交换分区swap是实现虚拟内存的重要概念。swap就是把硬盘上的一部分空间当作内存来使用,正在运行的程序会使用物理内存,把未使用的内存放到硬盘,叫做swap out。而把硬盘交换分区中的内存重新放到物理内存中,叫做swap in。

交换分区可以在逻辑上扩大内存空间,但是也会拖慢系统速度,因为硬盘的读写速度很慢。Linux 系统会将不经常使用的内存放到交换分区中。

cache 和 buffer 的区别

cache:作为page cache的内存,是文件系统的缓存,在文件层面上的数据会缓存到page cache中

buffer:作为buffer cache的内存,是磁盘块的缓存,直接对磁盘进行操作的数据会缓存到 buffer cache 中

简单来说:page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache中。如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache中。

2.2 vmstat

vmstat (Virtual Memory Statics,虚拟内存统计) 是对系统的整体情况进行统计,包括内核进程、虚拟内存、磁盘、中断CPU 活动的统计信息

>vmstat--help

Usage:
vmstat[options][delay[count]]

Options:
-a,--activeactive/inactivememory
-f,--forksnumberofforkssinceboot
-m,--slabsslabinfo
-n,--one-headerdonotredisplayheader
-s,--statseventcounterstatistics
-d,--diskdiskstatistics
-D,--disk-sumsummarizediskstatistics
-p,--partitionpartitionspecificstatistics
-S,--unitdefinedisplayunit
-w,--widewideoutput
-t,--timestampshowtimestamp

-h,--helpdisplaythishelpandexit
-V,--versionoutputversioninformationandexit
来源|公众号:网络技术干货圈
Formoredetailsseevmstat(8).

>vmstat-SM1100#1表示刷新间隔(秒),100表示打印次数,单位MB

procs-----------memory-------------swap-------io-----system--------cpu-----
rbswpdfreebuffcachesisobiboincsussyidwast
1004701881154000430009900
00047018811540000112231119800
00047018811540000911760010000
00047018811540000118229109900
00047018811540000781560010000
00047018811540006484186019720

procs

r列:表示运行和等待 CPU 时间片的进程数,这个值如果长期大于 CPU 个数,就说明 CPU 资源不足,可以考虑增加 CPU

b列:表示在等待资源的进程数,例如正在等待 I/O 或者内存交换

memory

swpn列:表示切换到交换分区的内存大小,如果swpd的值不为 0 或者比较大,且si、so的值长期为 0,那么这种情况暂时不会影响系统性能

free列:当前空闲的物理内存大小

buff列:表示buffers cache的内存大小,一般对块设备的读写才需要缓冲

cache列:表示page cache的内存大小,一般作为文件系统的缓存,频繁访问的文件都会被 cached。如果 cache 值比较大,就说明 cached 文件数量较多。如果此时 I/O 中的bi比较小,就说明文件系统效率比较好

swap

si列:表示swap in,即内存由交换分区放入物理内存中

so列:表示swap out,即将未使用的内存放到硬盘的交换分区中

io

bi列:表示从块设备读取的数据总量,即读磁盘,单位KB/s

bo列:表示写入块设备的数据总量,即写磁盘,单位KB/s

这里设置的bi+bo参考值为1000,如果超过1000,且wa值比较大,则表示系统磁盘 I/O 性能瓶颈

system

in列:表示在某一时间间隔中观察到的每秒设备中断数

cs列:表示每秒产生的上下文切换次数

上面这两个值越大,内核消耗的 CPU 时间就越多

cpu

us列:表示用户进程消耗 CPU 的时间百分比。us值比较高时,说明用户进程消耗的 CPU 时间多,如果长期大于 50%,可以考虑优化程序

sy列:表示内核进程消耗 CPU 的时间百分比。sy值比较高时,说明内核消耗的 CPU 时间多,如果us+sy超过 80%,就说明 CPU 资源存在不足

id列:表示 CPU 处在空闲状态的时间百分比

wa列:表示 I/O Wait 所占 CPU 的时间百分比。wa值越高,说明 I/O Wait 越严重。如果wa值超过 20%,说明 I/O Wait 严重

st列:表示 CPU Steal Time,针对虚拟机

3. 网络

3.1 接口

ifconfig
iftop
ethtool

3.2 端口

#端口
netstat-ntlp#TCP
netstat-nulp#UDP
netstat-nxlp#UNIX
netstat-nalp#不仅展示监听端口,还展示其他阶段的连接
lsof-p-P
lsof-i:5900
sar-nDEV1#网络流量
ss
ss-s

3.3 tcpdump

sudotcpdump-ianyudpport20112andip[0x1f:02]=0x4e91-XNnvvv
sudotcpdump-iany-XNnvvv
sudotcpdump-ianyudp-XNnvvv
sudotcpdump-ianyudpport20112-XNnvvv
sudotcpdump-ianyudpport20112andip[0x1f:02]=0x4e91-XNnvvv

3.4 nethogs

监控各进程的网络流量

nethogs

4. I/O 性能

iotop
iostat
iostat-kx2
vmstat-SM
vmstat210
dstat
dstat--top-io--top-bio

5. 进程

top
top-H
htop
psauxf
ps-eLf#展示线程
ls/proc//task

5.1 top

例如最常用的top命令:

HelpforInteractiveCommands-procpsversion3.2.8
Window1CumulativemodeOff.System:Delay3.0secs;SecuremodeOff.

Z,BGlobal:'Z'changecolormappings;'B'disable/enablebold
l,t,mToggleSummaries:'l'loadavg;'t'task/cpustats;'m'meminfo
1,IToggleSMPview:'1'single/separatestates;'I'Irix/Solarismode

f,o.Fields/Columns:'f'addorremove;'o'changedisplayorder
ForO.Selectsortfield
<,>.Movesortfield:'<' next col left; '>'nextcolright
R,H.Toggle:'R'normal/reversesort;'H'showthreads
c,i,S.Toggle:'c'cmdname/line;'i'idletasks;'S'cumulativetime
x,y.Togglehighlights:'x'sortfield;'y'runningtasks
z,b.Toggle:'z'color/mono;'b'bold/reverse(onlyif'x'or'y')
u.Showspecificuseronly
nor#.Setmaximumtasksdisplayed

k,rManipulatetasks:'k'kill;'r'renice
dorsSetupdateinterval
WWriteconfigurationfile
qQuit
(commandsshownwith'.'requireavisibletaskdisplaywindow)
Press'h'or'?'forhelpwithWindows,
anyotherkeytocontinue

1: 显示各个 CPU 的使用情况

c: 显示进程完整路径

H: 显示线程

P: 排序 - CPU 使用率

M: 排序 - 内存使用率

R: 倒序

Z: Change color mappings

B: Disable/enable bold

l: Toggle load avg

t: Toggle task/cpu stats

m: Toggle mem info

us-Timespentinuserspace
sy-Timespentinkernelspace
ni-Timespentrunningniceduserprocesses(Userdefinedpriority)
id-Timespentinidleoperations
wa-TimespentonwaitingonIOperipherals(eg.disk)
hi-Timespenthandlinghardwareinterruptroutines.(WheneveraperipheralunitwantattentionformtheCPU,itliterallypullsaline,tosignaltheCPUtoserviceit)
来源|公众号:网络技术干货圈
si-Timespenthandlingsoftwareinterruptroutines.(apieceofcode,callsaninterruptroutine...)
st-Timespentoninvoluntarywaitsbyvirtualcpuwhilehypervisorisservicinganotherprocessor(stolenfromavirtualmachine)

5.2 lsof

lsof-P-p123

6. 性能测试

stress--cpu8
--io4
--vm2
--vm-bytes128M
--timeout60s

time命令

7. 用户

w
whoami

8. 系统状态

uptime
htop
vmstat
mpstat
dstat

9. 硬件设备

lspci
lscpu
lsblk
lsblk-fm#显示文件系统、权限
lshw-cdisplay
dmidecode

10. 文件系统

#挂载
mount
umount
cat/etc/fstab
#LVM
pvdisplay
pvs
lvdisplay
lvs
vgdisplay
vgs
df-hT
lsof

11. 内核、中断

cat/proc/modules
sysctl-a|grep...
cat/proc/interrupts

12. 系统日志、内核日志

dmesg
less/var/log/messages
less/var/log/secure
less/var/log/auth

13. cron 定时任务

crontab-l
crontab-l-unobody
#查看所有用户的cron
sudofind/var/spool/cron/|sudoxargscat

14. 调试工具

14.1 perf

14.2 strace

strace命令用于打印系统调用、信号

strace-p
strace-p5191-f
strace-etrace=signal-p5191

-etrace=open
-etrace=file
-etrace=process
-etrace=network
-etrace=signal
-etrace=ipc
-etrace=desc
-etrace=memory

14.3 ltrace

ltrace命令用于打印动态链接库访问:

ltrace-p
ltrace-S#syscall

15. 场景案例

场景 1:连上服务器之后

w#显示当前登录的用户、登录IP、正在执行的进程等
last#看看最近谁登录了服务器、服务器重启时间
uptime#开机时间、登录用户、平均负载
history#查看历史命令

场景 2:/proc 目录有哪些信息

cat/proc/...

cgroups
cmdline
cpuinfo
crypto
devices
diskstats
filesystems
iomem
ioports
kallsyms
meminfo
modules
partitions
uptime
version
vmstat

场景 3:后台执行命令

nohup&>[some.log]&

一些命令

#综合
top
htop
glances
dstat&sar
mpstat
#性能分析
perf
#进程
ps
pstree-p
pgrep
pkill
pidof
Ctrl+z&jobs&fg
#网络
ip
ifconfig
dig
ping
traceroute
iftop
pingtop
nload
netstat
vnstat
slurm
scp
tcpdump
#磁盘I/O
iotop
iostat
#虚拟机
virt-top
#用户
w
whoami
#运行时间
uptime
#磁盘
du
df
lsblk
#权限
chown
chmod
#服务
systemctllist-unit-files
#定位
find
locate
#性能测试
time


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206564
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82518
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72765
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849

原文标题:Linux服务器那么多参数该如何监控,掌握这些Linux监控命令可以早点下班!

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    linux服务器和windows服务器

    和适用性。 首先,Linux服务器种基于开源的操作系统,其内核是由许多个人和组织共同开发和维护的。它具有高度的稳定性和安全 性。由于Linux操作系统的开放性,用户可以根据自己的需
    发表于 02-22 15:46

    手机也能玩Linux服务器——NOKIA手机高端应用

    行管理和操作呢?今天给大家介绍个软件,可以用手机连接远程的Linux服务器。SecureCRT和PUTTY,对于从事网络和系统管理工作的人士来说是再熟悉不过的。通过这两个工具远程连接到Lin
    发表于 11-28 14:05

    linux命令行操作和shell的区别 / 服务器选购!

    hell翻译成壳的意思,它是包裹在linux内核外层的,个可通过系列的linux命令对操作系统发出相关指令的人机界面。 shell可以通
    发表于 03-27 14:54

    基于最新DaVinci平台的视频监控服务器的设计与实现

    本设计以TI公司DaVinci系列芯片作为硬件平台,结合嵌入式Linux操作系统,实现了基于TMS320DM355的视频服务器。本文阐述了各硬件模块的选型与功能,以及服务器的软件架构与实现。同时给出
    发表于 07-19 06:19

    ubuntu下搭建NFS服务器

    :192.168.2.51为NFS服务器主机IP#ls /mnt/说明:mount命令可以在另Linux系统执行。这样就可以实现ubuntu下搭建NFS
    发表于 11-02 16:08

    linux服务器性能测试步骤

    linux服务器性能测试-服务器实时【磁盘】监控
    发表于 06-02 06:54

    如何使用esp8266网络服务器命令控制本地Linux PC?

    到本地 Linux 设备的 ssh 或类似连接,并从 Web 服务器文本输入传递命令。 请给我些指导,即使您在创建此项目时没有解决所有问题的方法,请将我带到类似的项目或告诉我这是否
    发表于 05-22 06:22

    Linux服务器性能测试及分析命令大全

    Linux服务器性能测试及分析命令大全
    发表于 09-05 15:42 12次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>服务器</b>性能测试及分析<b class='flag-5'>命令</b>大全

    详解Linux服务器的用户活动和命令

    如果您在管理Linux服务器,最好准备好使用用于检查用户活动的多个命令——用户何时登录及登录频率、属于哪些用户组、耗用多少磁盘空间、运行什么命令、占用多少磁盘空间、是否在阅读邮件等。
    的头像 发表于 07-03 15:30 5776次阅读

    Linux查看服务器状态的命令大全

    Linux查看服务器状态的命令大全
    发表于 07-09 09:34 21次下载
    <b class='flag-5'>Linux</b>查看<b class='flag-5'>服务器</b>状态的<b class='flag-5'>命令</b>大全

    linux的scp命令怎么用_linux的grep命令用法

    linux中,scp命令用于Linux之间复制文件和目录,即在一台Linux服务器中将本地的文件上传到一台远端
    发表于 09-04 15:36 4115次阅读
    <b class='flag-5'>linux</b>的scp<b class='flag-5'>命令</b>怎么用_<b class='flag-5'>linux</b>的grep<b class='flag-5'>命令</b>用法

    如何在linux服务器中打开端口

    有时我们可能需要在Linux服务器中打开端口或在Linux服务器的防火墙中启用端口来运行特定的应用程序。在本文中,小编将带大家分析一下如何在linu
    的头像 发表于 10-17 16:22 1.1w次阅读

    如何使用Checkmk监控Linux服务器

    `Checkmk` 是用于监控 Linux 服务器的最常用和用户友好的应用程序之一。它可以检查与您的 Linux 服务器连接的
    的头像 发表于 02-17 10:46 793次阅读
    如何使用Checkmk<b class='flag-5'>监控</b><b class='flag-5'>Linux</b><b class='flag-5'>服务器</b>?

    一文掌握Linux常用命令

    一文掌握Linux40个命令
    的头像 发表于 04-03 11:38 483次阅读

    linux服务器开启端口命令

    Linux服务器开启端口可以使用多种命令和方法,本文将详细介绍五种常用的方法,并且提供一些实际使用案例来帮助读者更好地理解和使用这些命令。 方法一:使用firewall-cmd
    的头像 发表于 11-17 10:29 2251次阅读