10.1 监控系统的状态
查看当前系统的负载:w、uptime
[root@localhost ~]# w
10:42:38 up 7 min, 1 user, load average: 0.16, 0.08, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.100.1 10:36 6.00s 0.04s 0.02s w
命令 w 查看的是系统整体上的负载
上面
第1行从左到右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载
第2行显示的是当前登录的用户及其登录地址等
uptime命令也可以显示上面第1行的内容:
[root@localhost ~]# uptime
11:30:06 up 54 min, 1 user, load average: 0.00, 0.01, 0.05
重点关注load average:
第1个数值表示1分钟内系统的平均负载值(该值越大说明服务器压力越大)
第2个数值表示5分钟内系统的平均负载值
第3个数值表示15分钟内系统的平均负载值
一般情况下,第1个值不超过服务器的CPU数量就没问题。查看服务器的CPU数量:
[root@localhost ~]# cat /proc/cpuinfo
也可以这样查看:
[root@localhost ~]# grep -c 'precessor' /proc/cpuinfo
0
在linux中,服务器有2*n个CPU(n为单颗物理CPU上有n核)。如果n是4,则查看 /proc/cpuinfo 这个文件会显示8段类似信息,最后一段的processor:后面会显示为7。
监控系统的状态:vmstat
[root@localhost ~]# 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 1556704 2076 168336 0 0 12 1 20 16 0 0 100 0 0
vmstat 命令显示的结果分为6部分:procs、memory、swap、io、system和cpu
procs–显示进程的相关信息
r(run):表示运行或等待CPU时间片的进程数
b(block):表示等待资源的进程数,资源指的是I/O、内存等memory–显示内存的相关信息
swpd:表示切换到交换分区中的内存数量,单位为KB,该值波动时说明内存不足
free:表示当前空闲的内存数量,单位为KB
buff:表示(即将写入磁盘的)缓冲大小,单位为KB
cache:表示(从磁盘读取的)缓存大小,单位为KBswap–显示内存的交换情况
si:表示由交换区写入内存的数据量,单位为KB
so:表示由内存写入交换区的数据量,单位为KBio–显示内存的交换情况
bi:表示从块设备读取数据的量(磁盘→内存),单位为KB
bo:表示从块设备写入数据的量(内存→磁盘),单位为KBsystem–显示采集间隔内发生的中断次数
in:表示在某一时间间隔内观测到的每秒设备的中断次数
cd:表示每秒产生的上下文切换次数cpu–显示CPU的使用状态
us:表示用户下所花费CPU的时间百分比(通常us<=10比较合适)
sy:表示系统花费CPU的时间百分比(sy与us呈正相关)
id:表示CPU处于空闲状态的时间百分比
wa:表示I/O等待所占用CPU的时间百分比
st:表示被偷走的CPU所占的时间百分比(一般为0)
us + sy + id = 100%
一般关注r、b、si、so、bi、bo、us和wa这几列信息
vmstat n m 表示动态输出,每n秒输出一次,共输出m次
[root@localhost ~]# 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 1556356 2076 168376 0 0 6 0 13 11 0 0 100 0 0
0 0 0 1556356 2076 168376 0 0 0 0 84 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 81 70 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 62 55 0 0 100 0 0
1 0 0 1556340 2076 168376 0 0 0 0 80 73 0 0 100 0 0
vmstat 1 5 表示每1秒输出一次,共输出5次
[root@localhost ~]# vmstat 1
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 1556340 2076 168376 0 0 6 0 13 11 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 85 69 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 68 60 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 60 54 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 77 68 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 67 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 69 62 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 73 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 67 62 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 73 68 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 67 60 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 60 53 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 69 62 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 68 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 72 63 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 48 44 40 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 29 22 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 41 29 0 0 100 0 0
^Z
[1]+ 已停止 vmstat 1
vmstat 1 表示每1秒输出一次,且一直输出,除非按Ctrl+Z中止或Ctrl+C结束
显示进程所占用的系统资源:top/htop
top
top命令用于动态监控进程所占的系统资源,每隔三秒刷新一次,默认把占用系统资源(CPU、内存、磁盘I/O等)最高的进程放在最上面。
top - 14:17:19 up 3:41, 1 user, load average: 0.00, 0.02, 0.05 Tasks: 113 total, 2 running, 111 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1865308 total, 1370480 free, 139216 used, 355612 buff/cache KiB Swap: 4194300 total, 4194300 free, 0 used. 1532752 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1811 root 20 0 161944 2200 1548 R 0.3 0.1 0:00.10 top 1 root 20 0 193492 6592 4128 S 0.0 0.4 0:01.99 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.03 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.61 kworker/u256:0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.37 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.48 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.08 watchdog/0 12 root rt 0 0 0 0 S 0.0 0.0 0:00.08 watchdog/1 13 root rt 0 0 0 0 S 0.0 0.0 0:00.31 migration/1 14 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/1 15 root 20 0 0 0 0 S 0.0 0.0 0:00.34 kworker/1:0 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H 17 root rt 0 0 0 0 S 0.0 0.0 0:00.10 watchdog/2
top 查看进程使用资源情况
top -c 显示详细的进程信息
top -bn1 静态显示所有进程
[root@localhost ~]# top -bn1 -c |head -15
top - 14:24:49 up 3:49, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 1.6 sy, 0.0 ni, 98.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1865308 total, 1369280 free, 140300 used, 355728 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1531624 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1823 root 20 0 161868 2168 1600 R 6.2 0.1 0:00.01 top -bn1 -c
1 root 20 0 193492 6592 4128 S 0.0 0.4 0:02.04 /usr/lib/systemd/systemd --switched-root --syste+
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 [kthreadd]
3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 [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.62 [kworker/u256:0]
7 root rt 0 0 0 0 S 0.0 0.0 0:00.37 [migration/0]
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [rcu_bh]
q 退出top
数字1 显示所有核CPU
M 按内存使用从高到低排序
P 按CPU使用从高到低排序
htop
top只支持键盘操作,显示单调,htop是Linux系统下一个基本文本模式的、交互式的进程查看器,主要用于控制台或shell中,可以替代top,是top的高级版本。
htop命令优点:
1. 快速查看关键性能统计数据,如CPU(多核布局)、内存/交换使用;
2. 可以横向或纵向滚动浏览进程列表,以查看所有的进程和完整的命令行;
3. 杀掉进程时可以直接选择而不需要输入进程号;
4. 通过鼠标操作条目;
5. 比top启动得更快。
上面左上角显示CPU、内存、交换区的使用情况,右边显示任务、负载、开机时间,下面就是进程实时状况。
安装hotp:yum install -y htop
下面是 F1~F10 的功能和对应的字母快捷键:
F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop参数:
-C –no-color 使用一个单色的配色方案
-d –delay=DELAY 设置延迟更新时间,单位秒
-h –help 显示htop 命令帮助信息
-u –user=USERNAME 只显示一个给定的用户的过程
-p –pid=PID,PID… 只显示给定的PIDs
-s –sort-key COLUMN 依此列来排序
-v –version 显示版本信息交互式命令(INTERACTIVE COMMANDS):
上下键或PgUP、PgDn 选定想要的进程,左右键或Home, End 移动字段,当然也可以直接用鼠标选定进程;
Space 标记/取消标记一个进程。命令可以作用于多个进程,例如 “kill”,将应用于所有已标记的进程
U 取消标记所有进程
s 选择某一进程,按s:用strace追踪进程的系统调用
l 显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件(小写l)
I 倒转排序顺序,如果排序是正序的,则反转成倒序的,反之亦然(大写i)
+, - 在树形模式下,展开或折叠子树
a (在有多处理器的机器上) 设置 CPU affinity: 标记一个进程允许使用哪些CPU
u 显示特定用户进程
M 按Memory 使用排序
P 按CPU 使用排序
T 按Time+ 使用排序
F 跟踪进程: 如果排序顺序引起选定的进程在列表上到处移动,让选定条跟随该进程。这对监视一个进程非常有用:通过这种方式,你可以让一个进程在屏幕上一直可见。使用方向键会停止该功能。
K 显示/隐藏内核线程
H 显示/隐藏用户线程
Ctrl-L 刷新
监控系统状态:sar
sar 命令可以监控平均负载、网卡流量、磁盘状态、内存使用等系统状态,可以显示历史信息,可以显示当天从零时开始到当前时刻的系统状态信息,每10分钟记录一次。
安装sar:yum isntall -y sysstat
初次使用sar会报错,因为sar还没有生成相应的数据库文件,它的数据库文件保存在 /var/log/sa目录下
[root@localhost ~]# sar
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 2018年06月09日 _x86_64_ (4 CPU)
10时35分41秒 LINUX RESTART
10时40分01秒 CPU %user %nice %system %iowait %steal %idle
10时50分01秒 all 0.00 0.00 0.01 0.00 0.00 99.99
11时00分01秒 all 0.00 0.00 0.01 0.00 0.00 99.99
11时10分01秒 all 0.00 0.00 0.03 0.05 0.00 99.92
11时20分01秒 all 0.00 0.00 0.01 0.00 0.00 99.98
11时30分01秒 all 0.00 0.00 0.01 0.00 0.00 99.99
11时40分01秒 all 0.00 0.00 0.01 0.01 0.00 99.98
11时50分01秒 all 0.00 0.00 0.01 0.00 0.00 99.99
12时00分01秒 all 0.00 0.00 0.01 0.00 0.00 99.99
12时10分01秒 all 0.00 0.00 0.01 0.00 0.00 99.98
12时20分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
12时30分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
12时40分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
12时50分01秒 all 0.00 0.00 0.01 0.00 0.00 99.98
13时00分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
13时10分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
13时20分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
13时30分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
13时40分01秒 all 0.01 0.00 0.02 0.00 0.00 99.97
13时50分01秒 all 0.00 0.00 0.02 0.00 0.00 99.98
14时00分01秒 all 0.01 0.00 0.02 0.00 0.00 99.97
14时10分01秒 all 0.00 0.00 0.01 0.00 0.00 99.98
14时20分01秒 all 0.10 0.00 0.22 0.28 0.00 99.41
14时20分01秒 CPU %user %nice %system %iowait %steal %idle
14时30分01秒 all 0.00 0.00 0.01 0.01 0.00 99.98
14时40分01秒 all 0.01 0.00 0.04 0.00 0.00 99.94
14时50分01秒 all 0.01 0.00 0.06 0.00 0.00 99.93
平均时间: all 0.01 0.00 0.03 0.01 0.00 99.95
查看网卡流量:sar -n DEV
[root@localhost ~]# sar -n DEV |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 2018年06月09日 _x86_64_ (4 CPU)
10时35分41秒 LINUX RESTART
10时40分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10时50分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时50分01秒 ens33 0.12 0.12 0.01 0.01 0.00 0.00 0.00
11时00分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时00分01秒 ens33 0.09 0.11 0.01 0.01 0.00 0.00 0.00
11时10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时10分01秒 ens33 0.38 0.26 0.03 0.03 0.00 0.00 0.00
11时20分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时20分01秒 ens33 0.15 0.12 0.01 0.01 0.00 0.00 0.00
11时30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时30分01秒 ens33 0.06 0.07 0.00 0.00 0.00 0.00 0.00
IFACE 这一列表示设备名称
rxpck/s 这一列表示每秒进入收取的包的数量
txpck/s 这一列表示每秒发送出去的包的数量
rxKB/s 这一列表示每秒收取的数据量(单位为KB)
txKB/s 这一列表示每秒发送的数据量(单位为KB)
[root@localhost ~]# sar -n DEV -f /var/log/sa/sa09 |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 2018年06月09日 _x86_64_ (4 CPU)
10时35分41秒 LINUX RESTART
10时40分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10时50分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时50分01秒 ens33 0.12 0.12 0.01 0.01 0.00 0.00 0.00
11时00分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时00分01秒 ens33 0.09 0.11 0.01 0.01 0.00 0.00 0.00
11时10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时10分01秒 ens33 0.38 0.26 0.03 0.03 0.00 0.00 0.00
11时20分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时20分01秒 ens33 0.15 0.12 0.01 0.01 0.00 0.00 0.00
11时30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时30分01秒 ens33 0.06 0.07 0.00 0.00 0.00 0.00 0.00
使用 -f 选项可以查看某一天的网卡流量历史,后面跟文件名(以sa开头的文件,不能直接cat),sar的库文件在/var/log/sa目录下,还有sar开头的文件,可以直接cat
查看历史负载:sar -q
[root@localhost ~]# sar -q |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 2018年06月09日 _x86_64_ (4 CPU)
10时35分41秒 LINUX RESTART
10时40分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
10时50分01秒 0 130 0.00 0.02 0.05 0
11时00分01秒 0 129 0.00 0.01 0.05 0
11时10分01秒 0 131 0.01 0.02 0.05 0
11时20分01秒 0 130 0.00 0.01 0.05 0
11时30分01秒 0 129 0.00 0.01 0.05 0
11时40分01秒 0 130 0.00 0.01 0.05 0
11时50分01秒 0 130 0.00 0.01 0.05 0
12时00分01秒 0 129 0.00 0.01 0.05 0
12时10分01秒 0 131 0.00 0.01 0.05 0
12时20分01秒 0 131 0.00 0.01 0.05 0
查看磁盘使用:sar -b
[root@localhost ~]# sar -b |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 2018年06月09日 _x86_64_ (4 CPU)
10时35分41秒 LINUX RESTART
10时40分01秒 tps rtps wtps bread/s bwrtn/s
10时50分01秒 0.05 0.00 0.05 0.12 0.54
11时00分01秒 0.06 0.02 0.04 0.59 0.57
11时10分01秒 0.88 0.48 0.40 14.22 9.21
11时20分01秒 0.04 0.00 0.03 0.11 0.36
11时30分01秒 0.05 0.00 0.05 0.00 0.47
11时40分01秒 0.05 0.00 0.05 0.04 0.70
11时50分01秒 0.06 0.00 0.06 0.00 0.70
12时00分01秒 0.02 0.00 0.02 0.00 0.29
12时10分01秒 0.07 0.00 0.07 0.00 0.84
12时20分01秒 0.04 0.00 0.04 0.00 0.40
查看网卡流量:nload
sar虽然可以查看网卡流量,但不够直观,而nload非常直观
安装nload:yum install -y epel-release;yum install -y nload
nload 动态显示,按向右箭头可以其它网卡的网络流量
输出结果分为两个部分,Incoming为进入网卡的流量,Outgoing为网卡出去的流量,一般关注Curr那行数据,其单位也可以动态自动调整
监控I/O性能:iostat、iotop
iostat -x和iotop 都可以查看磁盘使用情况
[root@localhost ~]# iostat -x
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 2018年06月09日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.01 0.00 0.04 0.04 0.00 99.91
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.01 0.42 0.12 13.15 4.38 65.53 0.01 13.35 10.98 21.69 4.82 0.26
scd0 0.00 0.00 0.00 0.00 0.06 0.00 114.22 0.00 43.78 43.78 0.00 43.22 0.00
iostat为静态显示
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 22
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
6 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u256:0]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh]
9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
10 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [lru-add-drain]
11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1]
13 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]
14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]
15 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/1:0]
16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/1:0H]
iotop类似于top,可以动态显示某个进程使用磁盘的状况
查看内存使用状况:free
free 命令可以查看当前系统的总内存大小以及使用内存的情况
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1865308 139724 1369236 9692 356348 1532092
Swap: 4194300 0 4194300
total:内存总大小
used:真正使用的内存大小
free:剩余物理内存大小
shared:共享内存大小
buff/cache:分配给buffer和cache的内存,即缓冲/缓存(数据经过CPU计算,即将写入磁盘,用到的内存为buffer;CPU要计算时,需要把数据从磁盘中读出来,临时放入内存中,用到的内存是cache)
available:系统可使用的内存大小,包含free和buffer/cache剩余部分
total = used + free + buff/cache
free命令可以加 -m和-g选项,分别以MB和GB为单位显示内存的使用状况,也支持-h选项
查看系统进程:ps
ps 命令专门查看系统进程
[root@localhost ~]# ps
PID TTY TIME CMD
1253 pts/0 00:00:00 bash
1939 pts/0 00:00:00 ps
ps不加参数时无法显示详细的进程信息
[root@localhost ~]# ps aux |head -15
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193492 6592 ? Ss 10:35 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 10:35 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:35 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:35 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 10:35 0:00 [kworker/u256:0]
root 7 0.0 0.0 0 0 ? S 10:35 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 10:35 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 10:35 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 10:35 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 10:35 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 10:35 0:00 [watchdog/1]
root 13 0.0 0.0 0 0 ? S 10:35 0:00 [migration/1]
root 14 0.0 0.0 0 0 ? S 10:35 0:00 [ksoftirqd/1]
root 15 0.0 0.0 0 0 ? S 10:35 0:00 [kworker/1:0]
ps aux 显示进程信息非常详细(ps -elf 作用与ps aux类似)
- PID 表示进程的ID,kill使用时后面需要跟上PID
- STAT 进程的状态,主要有以下几种:
- D 不能中断进程(通常为IO)
- R(run) 正在运行中的进程
- S(sleep)已经中断的进程
- Z 僵尸进程,杀不掉、打不死的进程(主进程意外丢失)
- < 高优先级进程
- N 低优先级进程
- s 主进程
- l 多线程进程
- + 在前台运行的进程
[root@localhost ~]# ps aux |grep sshd
root 923 0.0 0.2 112796 4296 ? Ss 10:36 0:00 /usr/sbin/sshd -D
root 1249 0.0 0.2 158800 5540 ? Ss 10:36 0:00 sshd: root@pts/0
root 1974 0.0 0.0 112724 984 pts/0 S+ 16:02 0:00 grep --color=auto sshd
ps连同管道符一起使用,可以查看某个进程或它的数量(grep -c)
查看网络状况:netstat
netstat 命令用来查看网络连接状况、系统所开放端口、路由表等信息
常用用法:netstat -lnp 、netstat -an
[root@localhost ~]# netstat -lnp |head -15
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 923/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1152/master
tcp6 0 0 :::22 :::* LISTEN 923/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1152/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 571/chronyd
udp6 0 0 ::1:323 :::* 571/chronyd
raw6 0 0 :::58 :::* 7 595/NetworkManager
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 19801 1152/master private/tlsmgr
unix 2 [ ACC ] STREAM LISTENING 19804 1152/master private/rewrite
unix 2 [ ACC ] STREAM LISTENING 19807 1152/master private/bounce
unix 2 [ ACC ] STREAM LISTENING 19810 1152/master private/defer
netstat -lnp 查看当前系统启动了哪些端口(netstat -ltnp 查看tcp端口;netstat -lunp 查看udp端口)
[root@localhost ~]# netstat -an |head -20
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
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.100.128:22 192.168.100.1:51990 ESTABLISHED
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
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 19801 private/tlsmgr
unix 2 [ ACC ] STREAM LISTENING 19804 private/rewrite
unix 2 [ ACC ] STREAM LISTENING 19807 private/bounce
unix 2 [ ACC ] STREAM LISTENING 19810 private/defer
unix 2 [ ACC ] STREAM LISTENING 19852 private/discard
unix 2 [ ACC ] STREAM LISTENING 19858 private/virtual
unix 2 [ ACC ] STREAM LISTENING 17445 /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 19813 private/trace
netstat -an 显示网络连接状况
重要:netstat -an |awk ‘/^tcp/{+=sta[$NF]}END{for(key in sta) print key,”\t”,sta[key]}’ 查看tcp每一种状态出现的数量
ss -an (与netstat作用类似)
10.2 抓包工具
当初步判定服务器上有流量攻击时,使用抓包工具来抓取数据包可以知道的IP
tcpdump 工具:tcpdump -nn
安装tcpdump:yum install -y tcpdump
tcpdump 命令:
-nn 作用是让第3列和第4列显示成“ip+端口号”的形式,不加-nn则显示“主机名+服务名”
tcpdump -nn
-i 指定设备名称
-c 指定抓包数量,抓够了自动退出
tcpdump -nn -i 设备名(not)port 指定端口
-w 指定保存位置
-r 读取抓到的包内容
tcp 指定抓tcp的包
[root@localhost ~]# tcpdump -nn -i ens33 -c 10
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
16:29:43.007506 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1203060315:1203060527, ack 4165463380, win 251, length 212
16:29:43.008347 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 212:408, ack 1, win 251, length 196
16:29:43.008424 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 408:572, ack 1, win 251, length 164
16:29:43.008491 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 572:736, ack 1, win 251, length 164
16:29:43.008555 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 736:900, ack 1, win 251, length 164
16:29:43.008620 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 900:1064, ack 1, win 251, length 164
16:29:43.008684 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1064:1244, ack 1, win 251, length 180
16:29:43.008747 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1244:1424, ack 1, win 251, length 180
16:29:43.008823 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1424:1604, ack 1, win 251, length 180
16:29:43.009124 IP 192.168.100.1.51990 > 192.168.100.128.22: Flags [.], ack 1604, win 2053, length 0
10 packets captured
11 packets received by filter
0 packets dropped by kernel
wireshark工具:tshark
安装tshark:yum install -y wireshark
tshark命令:
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” 用于web服务器抓包
10.3 Linux网络相关
查看网卡IP:ifconfig、ip addr
ifconfig 命令类似于Windows的ipconfig命令,后面不跟任何选项和参数时,只显示当前网卡IP的相关信息(如子网掩码、网关等)
安装ifconfig:yum install -y net-tools
ifconfig 查看网卡ip
设置(修改)ip:vim /etc/sysconfig/network_scripts/ifcfg-ens33(这里以ens33为网卡名为例)
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.128 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::b76:caa8:3d7c:71bc prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e4:fc:a5 txqueuelen 1000 (Ethernet)
RX packets 12004 bytes 6150452 (5.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16570 bytes 4217661 (4.0 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 78 bytes 6856 (6.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 78 bytes 6856 (6.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifdown 关闭网卡
ifup 启动网卡
重启网卡:
ifdown 网卡名;ifup 网卡名(远程时这样无法重启,会断开)
可以这样重启:ifdown ens33 && ifup ens33
或者:systemctl restart network
给一个网卡设定多个IP(虚拟网卡):vim ifcfg-ens:1
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:1
[root@localhost network-scripts]# vim ifcfg-ens33\:1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:1
UUID=d71e4905-fa6f-4d09-8533-714dfb0b9e5d
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.100.130
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=8.8.8.8
DNS2=4.2.2.2
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.128 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::b76:caa8:3d7c:71bc prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e4:fc:a5 txqueuelen 1000 (Ethernet)
RX packets 12802 bytes 6219046 (5.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17083 bytes 4281925 (4.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.130 netmask 255.255.255.0 broadcast 192.168.100.255
ether 00:0c:29:e4:fc:a5 txqueuelen 1000 (Ethernet)
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 90 bytes 7912 (7.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 90 bytes 7912 (7.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
**vim ifcfg-ens:1(加转义字符\给:转义)时,需要修改NAME、DEVICE、IPADDR,设置完重启网卡
(上面NAME=ENS33:1;DEVICE=ens33:1;IPADDR=192.168.100.130)**
查看网卡连接状态:mii-tool、ethtool
mii-tool 查看网卡是否连接
[root@localhost network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
ethtool 查看网卡状态
[root@localhost network-scripts]# ethtool ens33
Settings for ens33:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
更改主机名:hostname、hostnamectl set-hostname
更改主机名:
hostname(重启后失效)
hostnamectl set-hostname(重启后不变)
设置DNS:vim /etc/hosts
设置DNS:
vi /etc/resolv.conf (临时修改)
修改网卡配置文件(永久修改)
vi /etc/hosts 临时解析某个域名:
1. 一个ip可以对应多个域名,反之不行
2. 每一行只能有1个IP
3. 出现多个相同域名时,按最前面出现的记录来解析
更多资料参考:
TCP三次握手四次挥手
tshark的几个用法