10.1 linux系统日常运维

Linux日常系统运维管理

1. 监控系统的状态

1.1 使用w命令查看当前系统的负载

	[root@lz-01 ~]# w
	 08:33:35 up 7 min,  1 user,  load average: 0.00, 0.03, 0.05
	USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
	root     pts/0    192.168.253.1    08:26    7.00s  0.01s  0.00s w

w命令显示信息丰富, 每行信息如下:

  • 第1行从左至右显示的信息依次为: 系统时间,系统运行时间,登录用户数,平均负载
  • 第2行开始的所有行提示:当前登录的用户名及登录地址等

上述信息中最需要关注的平均负载load average:后边3个数值, 分别表示1分钟 5分钟 15分钟内系统的平均负载.

着重看第1个值, 表示单位时间段内使用CPU的活动进程数, 值越大说明服务器的压力越大. 一般这个值不超过服务器的逻辑CPU数量就没关系

如何查看CPU数量
[root@lz-01 ~]# grep -c 'processor' /proc/cpuinfo
2

上例中CPU数量有2个

  • /proc/cpuinfo这个文件记录CPU的详细信息. 服务器有很多是2颗多核CPU,在linux中计算是 2*n个CPU (n为单颗CPU上有几核);
  • n为4时,查看/proc/cpuinfo这个文件时会显示8段信息, 最后一段processor会显示7
  • 查看有几颗物理CPU时, 需要查看physical id

1.2 使用vmstat命令监控系统的状态

w命令查看系统整体负载,无法判断具体是哪里有压力; vmstat可以判断

[root@lz-01 ~]# 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 1577072   2076 151568    0    0    59     3   64  127  0  1 98  0  0

vmstat命令打印结果分为6部分: procs, memory, swap, io, system, cpu; 我们重点关注r, b, si, so, bi, bo

  • procs 显示进程的相关信息
  • r (run): 表示运行或等待CPU时间片的进程数
  • b (block): 表示等待资源的进程数, 这个资源指的是I/O,内存等. 该数值如果长时间大于1,需要关注
  • memory显示内存的相关信息
  • swpd: 表示切换到交换分区中的内存数量,单位KB
  • free: 表示当前空闲的内存数量,单位KB
  • buff: 表示(即将写入磁盘的)缓冲大小,单位KB
  • cache: 表示 (从磁盘中读取的)缓存大小,单位KB
  • swap 显示内存的交换情况
  • si: 表示由交换区写入内存的数据量,单位KB
  • so: 表示由内存写入交换区的数据量,单位KB
  • io 显示磁盘的使用情况
  • bi: 表示从块设备读取数据的量(读磁盘),单位KB
  • bo; 表示从块设备写入数据的量(写磁盘), 单位KB
  • system 显示采集间隔内发生的中断次数
  • in: 表示在某一时间间隔内观测到的每秒设备中的中断次数
  • cs: 表示每秒产生的上下文切换次数
  • cpu 显示CPU的使用状态
  • us: 显示用户下所花费CPU的时间百分比
  • sy: 显示系统花费CPU的时间百分比
  • id: 表示CPU处于空闲状态的时间百分比
  • wa: 表示I/O等待所占用的CPU的时间百分比
  • st: 表示被偷走的CPU所占百分比(一般为0,不用关注)

Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器; Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据

[root@lz-01 ~]# 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
 1  0      0 1577112   2076 151568    0    0    58     3   63  125  0  1 98  0  0
 0  0      0 1577088   2076 151568    0    0     0     0   63   67  0  1 100  0  0
 0  0      0 1577088   2076 151568    0    0     0     0   45   58  0  0 100  0  0
 0  0      0 1577088   2076 151568    0    0     0     0   28   39  0  0 100  0  0
 0  0      0 1577088   2076 151568    0    0     0     0   28   41  0  0 100  0  0
[root@lz-01 ~]# 
  • 以上vmstat后1 每隔一秒; 5 输出5次, 不加则一直输出.

1.3 用top命令显示进程所占的系统资源

top命令用于动态监控进程所占系统资源,每隔3秒变一次. 会把占有系统资源(CPU,内存,磁盘I/O等)最高的放在最前面.

[root@lz-01 ~]# top
top - 15:57:10 up  1:34,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 100 total,   1 running,  99 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 :  1863252 total,  1568172 free,   135288 used,   159792 buff/cache
KiB Swap:  3905532 total,  3905532 free,        0 used.  1555844 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND           
  5816 root      20   0  300936   6492   5124 S   0.5  0.3   0:06.92 vmtoolsd          
  7221 root      20   0       0      0      0 S   0.5  0.0   0:00.95 kworker/0:0       
     1 root      20   0  125312   3720   2572 S   0.0  0.2   0:02.04 systemd           
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd          
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.11 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.10 kworker/u256:0    
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 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:01.63 rcu_sched         
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain     
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.04 watchdog/0        
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 watchdog/1        
    13 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/1       
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.04 ksoftirqd/1       
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H      
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs         
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns       
  • top重点查看是进程使用系统资源的详细情况, 需要关注%Cpu (使用CPU百分比), %MEM (使用内存百分比), COMMAND (命令进程), RES (进程所占内存大小)
  • 按数字 1 列出所有核CPU的使用状态
  • M 按内存使用大小排序
  • P 按CPU使用大小排序
  • top - c 命令可以查看具体进程的命令
  • top -bn1 一次性输出所有信息非动态显示
  • kill PID 杀死进程

1.4 sar命令监控系统状态

sar命令几乎可以监控所有资源的状态,还可以打印历史信息, 可以显示当天从零点开始到当前时刻的系统状态信息. 如果系统这个命令不存在,需要安装sysstat包. yum install -y sysstat .

刚安装后sar会报错, sar工具还没有生成相应的数据库文件,默认数据文件在/var/log/sa 目录下.

查看网卡流量sar -n DEV
[root@lz-01 ~]# sar -n DEV 1 10
Linux 3.10.0-957.el7.x86_64 (lz-01) 	2019年04月14日 	_x86_64_	(2 CPU)

16时31分51秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时31分52秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时31分52秒     ens33      0.00      0.00      0.00      0.00      0.00      0.00      0.00

上例 是每隔 1 秒 打印10次

  • IFACE: 这一列表示设备名称
  • rxpck/s: 这一列表示每秒收取的包的数量;
  • txpck/s: 表示每秒发送出去包的数量
  • rxkB/s: 表示每秒收取的数据量; 单位KB
  • txkB/s: 表示每秒发送的数据量, 单位KB

rxpck/s收取的数据包大于4000或者rxkB/s收取的数据量大于500万, 很可能被攻击, 除非自己在复制数据

可以使用 -f 选项查看某一天的网卡流量历史, 后面跟文件名.如下:

	# sar -n DEV -f /var/log/sa/sa14
  • 以上信息保留一个月. sa14 以当天日期命名
  • 除生成sa14外, 第二天还会生成sar14. sa14为二进制文件, sar14可以cat直接查看
查看历史负载sar -q
[root@lz-01 ~]# sar -q
Linux 3.10.0-957.el7.x86_64 (lz-01) 	2019年04月14日 	_x86_64_	(2 CPU)

16时20分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
16时30分01秒         0       118      0.00      0.01      0.05         0
16时40分01秒         0       118      0.00      0.01      0.05         0
16时50分01秒         0       118      0.00      0.01      0.05         0
平均时间:         0       118      0.00      0.01      0.05         0
查看磁盘读写sar -b

可以查看磁盘读写情况

[root@lz-01 ~]# sar -b
Linux 3.10.0-957.el7.x86_64 (lz-01) 	2019年04月14日 	_x86_64_	(2 CPU)

16时20分01秒       tps      rtps      wtps   bread/s   bwrtn/s
16时30分01秒      0.06      0.00      0.06      0.00      0.78
16时40分01秒      0.04      0.00      0.04      0.00      0.61
16时50分01秒      0.05      0.00      0.05      0.00      0.57
平均时间:      0.05      0.00      0.05      0.00      0.65

1.5 查看网卡流量nload

系统默认没有nload命令,需要安装nload包, 安装nload包之前先安装epel-release包.

  • 最上面一行为网卡名字以及IP地址, 按右箭头可以切换查看其它网卡流量.
  • Incoming 进入网卡的流量
  • Outgoing为网卡出去的流量

关注Curr那行的数据, 单位是动态自动调整; q退出

1.6 监控io性能

iostat 命令需要安装sysstat包.

iostat -x查看磁盘使用
[root@lz-01 ~]# iostat -x 1
Linux 3.10.0-957.el7.x86_64 (lz-01) 	2019年04月14日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.08    0.00    0.20    0.01    0.00   99.71

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
scd0              0.00     0.00    0.00    0.00     0.10     0.00   114.22     0.00    1.72    1.72    0.00   1.39   0.00
sda               0.00     0.02    0.45    0.20    20.72     7.53    87.46     0.00    2.69    2.61    2.87   1.15   0.07
  • 关注 %util 表示I/O 等待时间所占CPU处理时间百分比
iotop查看磁盘使用

iotop 命令需要安装 yum install -y iotop

iotop也是动态显示的.

1.7 free命令查看内存使用情况

[root@lz-01 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1863252      136576     1399776        9708      326900     1545152
Swap:       3905532           0     3905532

默认单位是KB

  • total: 内存总大小
  • used: 真正使用的实际内存大小
  • free: 剩余物理内存大小 (没有被分配,纯剩余)
  • shared: 共享内存大小, 不用关注
  • buff/cache: 分配给buffer 和 cache 的内存总大小
  • available: 系统可使用内存的大小 .包含free, 包含被分配给某些应用的未被占用的 buffer 和 cache.
  • total= used+free+buff/cache

free 命令可以使用 - m , -g 分别指定以MB和GB单位显示. -h选项以合适的单位显示

[root@lz-01 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        133M        1.3G        9.5M        319M        1.5G
Swap:          3.7G          0B        3.7G
[root@lz-01 ~]# 

1.8 ps命令查看系统进程

ps命令专门显示系统进程命令

[root@lz-01 ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.2 125468  3844 ?        Ss   14:22   0:02 /usr/lib/systemd/systemd
root          2  0.0  0.0      0     0 ?        S    14:22   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    14:22   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   14:22   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    14:22   0:00 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    14:22   0:00 [migration/0]
  • PID: 表示进程的ID. kill PID 杀死进程
  • STAT: 进程的状态
  • D : 不能中断的进程 (通常为I/O)
  • R(run) : 正在运行的进程, 包含等待CPU时间片的进程
  • T : 已经停止或者暂停的进程
  • W :没有足够的内存页分配
  • X : 已经死掉的进程
  • Z : 僵尸进程, 杀不掉,打不死的垃圾进程
  • < : 高优先级进程
  • N : 低优先级进程
  • L : 在内存中被锁了内存分页
  • s : 主进程
  • l : 多线程进程
    • : 在前台运行的进程

最大的区别就是:进程里包含了线程,线程是进程的子单元; 同一个进程下的线程全部共享相同的内存,而进程之间内存相互隔离。

1.9 netstat命令查看网络状况

首先确保安装net-tools包; yum install -y net-tools

netstat命令用来打印网络连接状况, 系统所开放的端口,路由表等信息.常用法如下;

netstat -lnp 打印当前系统启动了哪些端口
[root@lz-01 ~]# netstat -lnp
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:22              0.0.0.0:*               LISTEN      6612/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6859/master         
tcp6       0      0 :::22                   :::*                    LISTEN      6612/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      6859/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           5848/chronyd        
udp6       0      0 ::1:323                 :::*                                5848/chronyd        
raw6       0      0 :::58                   :::*                    7           6134/NetworkManager 
netstat -ltnp 单独显示tcp端口
[root@lz-01 ~]# netstat -ltnp
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:22              0.0.0.0:*               LISTEN      6612/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6859/master         
tcp6       0      0 :::22                   :::*                    LISTEN      6612/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      6859/master         
netstat -lunp 单独显示udp端口
[root@lz-01 ~]# netstat -lunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 127.0.0.1:323           0.0.0.0:*                           5848/chronyd        
udp6       0      0 ::1:323                 :::*                                5848/chronyd  
打印所有网络连接状态
	netstat -an

或者

	ss -an      //不显示进程名字

小技巧;

netstat -an | awk '/^top/ {++sta[$NF]} END {for (key in sta) print key, "\t", sta[key]}'

2. linux下抓包工具

tcpdump抓包工具

默认没有安装, yum install -y tcpdump安装

[root@lz-01 ~]# tcpdump -nn -i ens33
20:35:47.888489 IP 192.168.253.128.22 > 192.168.253.1.62497: Flags [P.], seq 196684:197072, ack 53, win 320, length 388
  • -i后边跟设备名称, 如果要抓取其他网卡的数据包,后面跟网卡的名字
  • -nn选项作用是让第3列和第4列显示成"IP+端口号"的形式; 如果不加-nn, 则显示"主机名+服务名称"

以下是常用实例:

tcpdump -nn -i ens33 -c 100   // -c作用指定抓包数量, 抓够自动退出

tcpdump -nn -i ens33 port 22    //这样指定只抓22端口的

tcpdump -nn -i ens33 tcp and not port 22   //指定抓tcp的包,但不要22端口

tcpdump -nn -i ens33 port 22 and port53  //只抓22和53端口的包 


tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap  // 抓10个包写入1.cap文件中 

1.cap文件不能直接cat. 查看方法: tcpdump -r /tmp/1.cap

wireshark工具

实用方法:

[root@lz-01 ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src' -e "http.host" -e "http.request.method" -e "http.request.uri"

3. linux网络相关

3.1 ifconfig命令查看网卡IP

centos7默认没有安装, 需要yum install -y net-tools

[root@lz-01 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.253.128  netmask 255.255.255.0  broadcast 192.168.253.255
        inet6 fe80::d322:909e:d304:35e6  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0a:82:8e  txqueuelen 1000  (Ethernet)
        RX packets 37119  bytes 32671554 (31.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22617  bytes 3714700 (3.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 32  bytes 2592 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32  bytes 2592 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • ip add 可以查看网卡
  • ifconfig -a 选项可查看所有网卡, 包含down的网卡
  • ifdown 停用网卡
  • ifup 启动网卡

重启网卡:

ifdown ens33 && ifup ens33

或者: systemctl restart network重启网卡

转载于:https://my.oschina.net/u/3851442/blog/3036813

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值