▼监控系统的负载

w 查看当前系统的负载,详细显示主机运行时间,登录用户数,系统平均负载信息;

uptime 查看当前系统的负载和主机运行时间,简单显示;

[[email protected] /]# w
 21:27:11 up  9:15,  4 users,  load average: 0.00, 0.01, 0.05
USER     TTY        [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0     21:27    4.00s  0.14s  0.04s w
root     pts/1     14:47    1:37m  0.64s  0.64s -bash
root     pts/2     15:26    6:00m  0.07s  0.07s -bash
root     tty1      15:34    5:44m  0.17s  0.17s -bash
[[email protected] /]# uptime
 21:27:16 up  9:15,  4 users,  load average: 0.00, 0.01, 0.05

显示说明:

17:30:02 //系统当前时间;

up 8:06 //主机已运行时间,时间越大,说明机器越稳定。

3 users //用户连接数(是总的连接数,不是用户数)

load average: 0.05, 0.08, 0.02 //系统平均负载,统计最近1,5,15分钟内系统的平均负载;

第二行开始以及下面所有的行,记录当前登录的用户,从哪里登录,登录的时间等等;

重点需要关注load average:指在特定时间间隔内运行队列中的平均进程数。

第一个数值表示1分钟内系统的平均负载值;第二个数值表示5分钟内系统的平均负载值;第三个数值表示15分钟系统的平均负载值。这个值的意义是,单位时间段内CPU活动进程数。这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力,否则就要关注一下了。

cat /proc/cpuinfo 查看cpu的个数和核数

processor 线程数,从0开始(比如8线程为0-7)

core id 核心数

[[email protected] /]# cat /proc/cpuinfo  | grep 'processor'
processor       : 0
processor       : 1
processor       : 2
processor       : 3
[[email protected] /]# cat /proc/cpuinfo  | grep 'core id'
core id         : 0
core id         : 1
core id         : 2
core id         : 3

▼监控系统进程状态 – top

用于动态监控进程所占系统资源,每隔3秒变一次。

[[email protected] /]# top

top – 21:28:34 up  9:16,  4 users,  load average: 0.00, 0.01, 0.05
Tasks: 259 total,   1 running, 258 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:   1878216 total,   956228 used,   921988 free,     9528 buffers
KiB Swap:  2129916 total,        0 used,  2129916 free.   659116 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 9869 root      20   0  123660   1668   1108 R   0.7  0.1   0:00.09 top         
   73 root      20   0       0      0      0 S   0.3  0.0   0:49.45 rcu_sched   
   74 root      20   0       0      0      0 S   0.3  0.0   0:42.42 rcuos/0     
  183 root      20   0       0      0      0 S   0.3  0.0   0:42.74 kworker/0:2
    1 root      20   0  135740   7620   2460 S   0.0  0.4   0:06.38 systemd     
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.05 kthreadd    
    3 root      20   0       0      0      0 S   0.0  0.0   0:01.88 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:+
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.43 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
Tasks 任务,类似于windows的进程;

running 正在运行的进程;

sleeping 休眠的进程;

stopped 暂停或停止的进程;

zombie 僵尸进程;

RES 这一项为进程所占内存大小;

%MEM 为使用内存百分比。

在 top状态下,默认按cpu的使用率大小排列,按 “shift + m”, 可以按照内存使用大小排序。按数字 ‘1’ 可以列出各颗cpu的使用状态。

top -bn1 表示非动态打印系统资源使用情况,可以用在shell脚本中。

top -c 动态显示,最右侧的命令可以显示更详细的信息。

▼实时监控系统状态 vmstat

vmstat 监控一次

vmstat 1 实时监控,1秒刷新一次,按ctrl+c退出;

vmstat 1 10 只监控10次;

[[email protected] /]# vmstat
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 922292   9528 659116    0    0     5     0   15   21  0  0 100  0

vmstat各指标含义:

r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了si :由交换区进入内存的数量;so :由内存进入交换区的数量;bi :从块设备读取数据的量(读磁盘);bo: 从块设备写入数据的量(写磁盘);in : 每秒的中断次数,包含时钟中断;cs : 每秒的上下文切换次数;wa :表示I/O等待所占用cpu时间百分比.
▼查看系统内存使用情况 free

[[email protected] /]# free
             total       used       free     shared    buffers     cached
Mem:       1878216     956088     922128       9164       9528     659148
-/+ buffers/cache:     287412    1590804
Swap:      2129916          0    2129916
free默认以k为单位显示;

free -m 以M为单位显示;

free -g 以G为单位显示;

mem(total):内存总数;

mem(used):已经分配的内存;

mem(free):未分配的内存;

mem(buffers):系统分配但未被使用的buffers;

mem(cached)系统分配但未被使用的cache;buffers/cache(used):实际使用的buffers与cache 总量,也是实际使用的内存;

buffers/cache(free):未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存;(如图所示,free+buffers+cached的总和为当前可用的实际内存)

buffers(缓冲区)是即将要被写入磁盘的,cache(缓存)是被从磁盘中读出来的;

▼查看系统进程 ps

ps aux 或 ps -elf 详细显示当前系统的所有进程状态

PID :进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程(比如我想终止某一个进程,则用 ‘kill 进程的pid’ 有时并不能杀掉,则需要加一个-9选项了 kill -9 进程pid)


STAT :表示进程的状态,进程状态分为以下几种


D 不能中断的进程(通常为IO)

R 正在运行中的进程

S 已经中断的进程,系统中大部分进程都是这个状态

T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态


X 已经死掉的进程(这个从来不会出现)

Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。


< 高优先级进程

N 低优先级进程


L 在内存中被锁了内存分页

s 主进程


l 多线程进程


+ 在前台的进程

pstree 树形显示所有进程

[[email protected] /]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─alsactl
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─chronyd
        ├─crond
        ├─cupsd
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─iprdump
        ├─iprinit
        ├─iprupdate
        ├─irqbalance
        ├─ksmtuned───sleep
        ├─libvirtd───10*[{libvirtd}]
        ├─login───bash
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─packagekitd───2*[{packagekitd}]
        ├─polkitd───5*[{polkitd}]
        ├─rpc.statd
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─smartd
        ├─sshd─┬─sshd───2*
        │      └─sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd

▼监控网卡流量、历史负载 sar

安装sar的命令:yum install -y sysstat

sar -n DEV 查看网卡流量

sar -n DEV 1 实时监控网卡的流量,1秒刷新一次,按ctrl+c退出;

sar -n DEV 1 10 查看网卡的流量,1秒刷新一次,查看10次;sar -n DEV -f /var/log/sa/sa16 查看系统日志里面保存的网卡流量信息,按照每天的日期命名;查看历史负载 sar -q查看磁盘读写 sar -b
▼查看网络状况 netstat

netstat -lnp 查看当前系统开启的端口以及socketnetstat -an 查看当前系统所有的连接

[[email protected] /]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:39952           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:631           0.0.0.0:*               LISTEN     
tcp        0      0 172.16.77.1:22          172.16.250.72:57529     ESTABLISHED
tcp        0     52 172.16.77.1:22          172.16.250.72:52533     ESTABLISHED

发表评论

后才能评论