linux常用监控系统命令(代码片段)

腾云T 腾云T     2022-11-28     726

关键词:

监控系统的状态

使用w查看当前系统的负载,示例代码如下:
[root@centos ~]# w
 04:37:11 up  2:46,  2 users,  load average: 0.00, 0.01, 0.03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      01:51    2:03m  0.21s  0.21s -bash
root     pts/0    192.168.60.200   02:23    7.00s  0.11s  0.01s w

第一行从左面开始显示的信息依次为: 时间,系统运行时间,登录用户数,平均负载。第二行开始以及下面所有行,告诉我们的信息是,当前登录的都有哪些用户,以及他们从哪里登录的等等。值得着重关注的是第一行中的‘load average’后面的三个数值。

这三个数值分别表示1分钟内系统的平均负载值、5分钟内系统的平均负载值、15分钟系统的平均负载值,这个值代表单位时间内CPU活动的进程数。这个值越大说明你的服务器压力也大。一般情况下只要不超过服务器CPU数量就没有关系。

查看服务器CPU数量:
[root@centos ~]# cat /proc/cpuinfo |head -n20
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 158
model name      : Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
stepping        : 9
microcode       : 0xb4
cpu MHz         : 3404.941
cache size      : 6144 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp

'/proc/cpuinfo’这个文件记录了CPU的详细信息

使用vmstat监控系统的状态,示例代码如下:
[root@centos ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 2276760   2108 142660    0    0    24     3   59   66  0  0 100  0  0

与上面讲的w相比,vmstat更能具体的看出哪里(CPU,内存,磁盘等)有压力,vmstat命令打印结果共分为6部分:procs,memory,swap,io,system,cpu. 需要重点关注一下 r b si so bi bo 这几列。

  • procs 显示进程相关信息
    r: 表示运行和等待CPU时间片的进程数,如果长期大于服务器CPU的个数,则说明CPU不够用了;

    b:表示等待资源的进程数,比如等待I/O,内存等;

  • memory内存相关信息
    swpd:表示切换到交换分区中的内存数量;
    free:当前空闲的内存数量;
    buff:缓冲大小(即将写入磁盘的);
    cache:缓存大小(从磁盘中读取的);

  • swap内存交换情况
    si :由交换区写入内存的数据量;
    so:由内存写入到交换区的数据量;

  • io磁盘使用情况
    bi :从块设备读取数据的量(读磁盘);
    bo:从块设备写入数据的量(写磁盘);

  • system显示采集间隔内发生的中断次数
    in :表示在某一时间间隔中观测到的每秒设备中断数;
    cs:表示每秒产生的上下切换次数;

  • CPU 显示CPU的使用状态
    us:显示了用户下所花费CPU时间的百分比;
    sy:显示系统花费CPU时间百分比;
    id :表示CPU处于空闲状态的时间百分比;
    wa:表示I/O等待所占用CPU时间百分比;
    st :表示被偷走的CPU所占百分比(一般都为0,不用关注);

这些参数经常关注的是r列,b列,和wa列,如果磁盘IO压力很大是bi以及bo这两列数值会比较高,另外,当si,so两列数值比较高,并且不断变化是,说明内存不够了。

使用vmstat查看系统状态

使用vmstat命令通常使用下面这种形式,示例代码如下。

[root@centos ~]# vmstat 1 5
\\procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 2276012   2108 145064    0    0    53     5   66   80  0  0 100  0  0
 0  0      0 2276012   2108 145096    0    0     0     0   88   84  0  0 100  0  0
 0  0      0 2276012   2108 145096    0    0     0     0   77   75  0  0 100  0  0
 0  0      0 2276012   2108 145096    0    0     0     0   83   78  0  0 100  0  0
 0  0      0 2276012   2108 145096    0    0     0     0   96   89  0  0 100  0  0

上面代码表示,每隔一秒打印一次状态,共打印5次。

top查看进程所占系统资源,示例代码如下:
[root@centos ~]# top
top - 21:20:43 up  1:00,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2526480 total,  2275328 free,   103624 used,   147528 buff/cache
KiB Swap:  2752508 total,  2752508 free,        0 used.  2255660 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                          
   743 root      20   0  305080   6136   4772 S  0.3  0.2   0:03.10 vmtoolsd                                         
     1 root      20   0  125208   3744   2488 S  0.0  0.1   0:00.76 systemd                                          
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                         
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.09 ksoftirqd/0                                      
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                     
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/u256:0                                   
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                                      
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                           
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.35 rcu_sched                     

top命令可以动态监控进程所占系统资源,每隔3秒变一次。top命令重点查看的还是下面的进程使用系统资源详细状况。在top状态下,按“shift+m”,可以按照内存使用大小排序。

top-bn1可以非动态打印系统资源使用情况,示例代码如下:
[root@centos ~]# top -bn1
top - 21:25:28 up  1:04,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  6.2 sy,  0.0 ni, 93.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2526480 total,  2275328 free,   103620 used,   147532 buff/cache
KiB Swap:  2752508 total,  2752508 free,        0 used.  2255664 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     1 root      20   0  125208   3744   2488 S  0.0  0.1   0:00.76 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.09 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/u256:0
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.35 rcu_sched

和top命令唯一的区别就是,他可以一次性把所有信息输出出来而非动态显示。

free查看内存使用情况,示例代码如下:
[root@centos ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2526480      103352     2275560        8828      147568     2255912
Swap:       2752508           0     2752508

free命令可以查看当前系统的总内存大小以及使用内存的情况。我们还可以加-m或者-g选项分别以M或G为单位打印内存使用状况,示例代码如下:

[root@centos ~]# free free -m
              total        used        free      shared  buff/cache   available
Mem:           2467         101        2222           8         144        2202
Swap:          2687           0        2687
ps查看系统进程,示例代码如下:
[root@centos ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 125208  3744 ?        Ss   20:20   0:00 /usr/lib/systemd/systemd --switched-root --system -
root          2  0.0  0.0      0     0 ?        S    20:20   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    20:20   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   20:20   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    20:20   0:00 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    20:20   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    20:20   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    20:20   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S    20:20   0:00 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S    20:20   0:00 [kdevtmpfs]
root         13  0.0  0.0      0     0 ?        S<   20:20   0:00 [netns]
root         14  0.0  0.0      0     0 ?        S    20:20   0:00 [khungtaskd]
root         15  0.0  0.0      0     0 ?        S<   20:20   0:00 [writeback]
root         16  0.0  0.0      0     0 ?        S<   20:20   0:00 [kintegrityd]
root         17  0.0  0.0      0     0 ?        S<   20:20   0:00 [bioset]
root         18  0.0  0.0      0     0 ?        S<   20:20   0:00 [kblockd]
root         19  0.0  0.0      0     0 ?        S<   20:20   0:00 [md]
root         25  0.0  0.0      0     0 ?        S    20:20   0:00 [kswapd0]
root         26  0.0  0.0      0     0 ?        SN   20:20   0:00 [ksmd]
root         27  0.0  0.0      0     0 ?        SN   20:20   0:00 [khugepaged]
root         28  0.0  0.0      0     0 ?        S<   20:20   0:00 [crypto]
root         36  0.0  0.0      0     0 ?        S<   20:20   0:00 [kthrotld]

ps命令可以查看你所管理的系统都有哪些进程在运行,其实在上面介绍的top命令就可以,但是不容易看,ps可以专门显示系统进程。

下面介绍一下几个参数的一样

  • PID:进程的ID,在Linux内核管理进程中靠pid来识别和管理某一个进程。

  • STAT:表示进程的状态,进程状态分为以下几种
    D 不能中断的进程(通常为IO)
    R 正在运行中的进程
    S 已经中断的进程,通常情况下,系统中大部分进程都是这个 状态
    T 已经停止或者暂停的进程,如果我们正在运行一个命令,可以按Ctrl -Z 让它暂停,那么我们用ps查看就会显示T这个状态
    W 这个应该是说,从内核2.6xx以后,表示为没有足够的内存也分配
    X 已经死掉的进程(这可好像从来不会出现)
    Z 僵尸进程,杀不掉、打不死的垃圾进程,如果占系统一小点资源,没有关系,一般不会出现
    < 高优先级进程
    N 低优先几进程
    L 在内存中被锁了内存分页
    s 主进程
    l 多线程进程

    netstat 查看网络状况,示例代码如下:
    
[root@centos ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1014/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1001/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1230/master         
tcp6       0      0 :::21                   :::*                    LISTEN      1008/vsftpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1001/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1230/master         

netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息。最常用的关于netstat的命令就是netstat-lnp (打印当前系统启动哪些端口)以及netstat-an (打印网络连接状况)。

[root@centos ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 192.168.60.20:22        192.168.60.160:49717    ESTABLISHED
tcp6       0      0 :::21                   :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                               
raw6       0      0 :::58                   :::*                    7          

如果你所管理的服务器是一台提供web服务(80端口)的服务器,那你可以使用netstat -an|grep 80 查看当前连接web服务的有哪些IP了。

linux常用命令(代码片段)

Linux常用命令linux基本命令tarcpmvdudf系统操作监控命令wcreadelf网络相关跟踪网络路由路径netstatVIM搜索命令findgrepsedawklinux基本命令tar//解包:tarxvfFileName.tar//打包:tarcvfFileName.tarDirName//tar打包(注:tar是打包,不是压缩 查看详情

linux操作系统常用命令的汇总(代码片段)

Linux操作系统常用命令的汇总一、设置别名功能:通过别名机制简化常用的、比较长的命令格式:alias命令别名='命令'#(“=”两边不能有空格)unalias命令别名#取消设置别名思路:先设置别名,... 查看详情

万字肝货|超全总结,linux常用磁盘命令文件命令!(代码片段)

...核及发行版本  6、文件系统和目录结构  7、终端和常用命令  8、磁盘命令  9、文件命令  10、其他常用命令  11、案例讲解1、知识引入windows桌面系统/服务器端linux服务器端mac/unixandroid/ios桌面系统:主要是面... 查看详情

常用linux命令(分类详解!!)(代码片段)

Linux常用命令一、文件与目录操作1.1ls/ll命令1.2rm命令1.3cd命令1.4pwd命令1.5tree树形结构1.6mkdir命令1.7mv命令1.8cp命令1.9ln命令1.10touch命令1.11find命令1.12whereis命令二、关机三、系统(信息及日志位置)3.1系统信息3.2系统日志放... 查看详情

❤️万字总结《linux系统常用命令》❤️——常用的linux操作指令详解及案例!(建议收藏)(代码片段)

...是Linux操作系统实力的见证,接下来跟大家分享几个工作中常用的Linux操作命令Linux系统常用命令目录文件相关命令pwd显示工作目录ls显示目录内容du显示目录或文件大小find查找文件或目录mkdir创建 查看详情

linux——详解系统监控和常用命令(topfreedstat)(代码片段)

创作不易,来了的客官点点关注,收藏,订阅一键三连❤😜 往期文章Linux——超超讲解SSH的原理与SSH的实现!建议收藏❤Linux——万字总结用户与组的权限那些事儿!建议收藏!Linux——万字总结用户... 查看详情

linux集群监控常用命令截图(代码片段)

文章目录查看内存占用查看网络端口查看磁盘占用查看某程序的进程号查看IO占用查看内存占用top查看网络端口netstat查看磁盘占用df-h可选参数-h或--human-readable:用适合人阅读的方式来展示查看某程序的进程号ps-aux查看IO占用i... 查看详情

常用linux命令(代码片段)

...的程序显示出来psauxpstree命令以树状图显示进程间的关系#常用与统计当前系统有多少线程在运行,系统慢,io较高时使用,可以看哪个程序开启的线程多pstree-p|wc-lpstree-p进程号|wc-lulimit为进程及其子进程的资源使用设置限制... 查看详情

linux基础07linux远程管理常用命令(代码片段)

...维护服务器时,最好不要关闭系统,而应该重新启动系统常用命令示 查看详情

linux系统(ubuntu)常用命令--初学版(代码片段)

Linux系统(ubuntu)常用命令一、文件和目录操作1.cd/home进入/home目录2.cd..返回当前目录的上一级目录3.cd../..返回当前目录的上两级4.cd进入当前用户的主目录5.cd~username进入username用户的主目录6.cd-返回上次所在的目录7.pwd显... 查看详情

linux常用命令手册(代码片段)

Linux系统的组成linux内核(linux团队管理)shell:用户与内核交互的接口文件系统:ext3、ext4等。windows有fat32、ntfs第三方应用软件Shell基本知识Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(... 查看详情

linux系统常用命令(全面总结)(代码片段)

文章目录1.Linux之文件目录工作机制2.Linux命令之文件目录管理2.1目录管理2.1.1cd2.1.2ls2.1.3pwd2.1.4mkdir2.1.5rmdir2.1.6tree(需要安装)2.2文件管理2.2.1touch2.2.2ln2.2.3rename2.2.4stat2.2.5file2.2.6chmod2.2.7chown2.2.8locate和updatedb2.2.9fi 查看详情

linux系统常用命令(全面总结)(代码片段)

文章目录1.Linux之文件目录工作机制2.Linux命令之文件目录管理2.1目录管理2.1.1cd2.1.2ls2.1.3pwd2.1.4mkdir2.1.5rmdir2.1.6tree(需要安装)2.2文件管理2.2.1touch2.2.2ln2.2.3rename2.2.4stat2.2.5file2.2.6chmod2.2.7chown2.2.8locate2.2.9find2.2.10w 查看详情

系统运维系列之linux系统下常用查找命令整理(代码片段)

1前言网上关于linux命令大多写的很细很全,但是真正使用起来需要根据自己的场景进行拼接,本博客建立在实际场景下,在实际问题中使用linux查找命令。2grep命令使用场景:查找日志中的关键词,并且限定时... 查看详情

linux常用操作命令(代码片段)

...且它是黑客、渗透人员、运维人员等必会的。整理的Linux常用操作命令将会能够让你基础操作它。快捷键1、打开终端ctrl+alt+t2、推出鼠标ctrl+comm 查看详情

常用linux命令大全(100%收藏食用❤️)(代码片段)

...操作四、文件操作五、文件权限六、打包与解压七、其他常用命令八、系统管理“博主肝文章的分格一贯是先看小姐姐再写干货”一、基础知识1.1Linux系统的文件结构/bin二进制文件,系统常规命令/boot系统启动分区,系统... 查看详情

常用linux命令大全(100%收藏食用❤️)(代码片段)

...操作四、文件操作五、文件权限六、打包与解压七、其他常用命令八、系统管理“博主肝文章的分格一贯是先看小姐姐再写干货”一、基础知识1.1Linux系统的文件结构/bin二进制文件,系统常规命令/boot系统启动分区,系统... 查看详情

linux常用命令总结(代码片段)

Linux常用命令总结目录Linux常用命令总结服务器关机相关命令2.系统目录结构介绍3.文件操作相关命令4.文件的基本属性5.文件的内容查看6.Vim7.进程相关命令服务器关机相关命令关机指令为:shutdown;sync#将数据由内存同步到... 查看详情