1. 系统状态查看
1.1 w命令
[fangfc@node10011 ~]$ w
21:18:24 up 54 min, 1 user, load average: 0.00, 0.01, 0.04
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
fangfc pts/0 192.168.10.1 21:18 0.00s 0.08s 0.00s w
1.1.1 内容解析: - 第一行: + 21:18:24 系统当前时间 + up 54 min, 系统开机到现在过去 多长时间 + 1 user, 当前在线用户人数 + load average: 1, 2, 3 系统平均负载状态, 1分钟, 5分钟, 15分钟 - 第二,三行: + User 表示已登陆的用户的用户名 + TTY 登陆的终端号 + FROM 远程主机的地址 + LOGIN@ 登陆的时间 + IDLE 空闲了多长时间, 这个世纪时期, 一旦用户执行了任何操作, 计时器被重置 + JCPU 和 tty 连接进程占用的时间, 这个时间不包括后台进程占用的时间
+ PCPU 值当前进程(在WHAT显示的进程) 占用的时间 + WHAT 当前正在执行的进程命令行
1.1.2 选项
-h --no-neader 不显示头信息
-u --no-current 统计忽略当前进程的用户
-s --short 短格式显示
-o --old-style 传统样式输出内容
-i --ip-addr 显示IP地址, 不会进行域名解析
1.2 vmstat命令
[fangfc@node10011 ~]$ 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 3590068 2108 153460 0 0 7 0 18 16 0 0 100 0 0
1.2.1 内容解析 - 第一类 procs + r 表示正在运行的进程数, 如果该数值超过了CPU数,就可能出现CPU瓶颈 + b 被阻塞了的进程
- 第二类 memory
+ swpd 已使用的虚拟内存, 如果该值超过了 0, 表示物理内存不足了, 已近使用了swap
+ free 空闲的物理内存大小.
+ buff 用作缓冲区的内存数
+ cache 用作缓存的内存数
- 第三类 swap
+ si 从磁盘交换到内存的交换也数量(kb/s)
+ so 从内存交换到磁盘的交换页数据(kb/s)
- 第四类 io
+ bi IO 发送到块设备的块数(/s)
+ bo IO 从块设备接收的块数(/s)
- 第五类 system
+ in 每秒中断数a,包括时钟中断
+ cs 每秒上下文交换次数
- 第六类 cpu
+ us 用户进程使用的 CPU 时间(%)
+ sy 系统进程使用的 CPU 时间(%)
+ id CPU 空闲 时间(%)
+ wa 等待IO操作消耗的CPU 空闲 时间(%)
+ st 从虚拟设备中获得的时间(%)
1.2.2 vmstat 选项
-a: 显示活跃和非活跃内存
-f: 显示从系统启动到现在的 fork 数量
-m: 显示slabinfo
-n: 只需在开始显示一次各字段名称
-s: 显示内存相关统计信息以及多种系统活动数量
-d: 磁盘相关读写信息
-D: 统计磁盘信息
-p: 显示磁盘分区信息
-S: 显示指定单位显示 有 k,K,m,M
1.3 top 命令
top - 21:59:45 up 1:35, 1 user, load average: 0.01, 0.03, 0.05
Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3863568 total, 3589656 free, 117848 used, 156064 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 3525736 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6 root 20 0 0 0 0 S 0.3 0.0 0:00.44 kworker/u256:0
20 root 20 0 0 0 0 S 0.3 0.0 0:02.64 kworker/2:0
59 root 20 0 0 0 0 S 0.3 0.0 0:07.79 kworker/0:2
1456 fangfc 20 0 154588 2260 956 S 0.3 0.1 0:00.29 sshd
1505 fangfc 20 0 161964 2208 1544 R 0.3 0.1 0:00.03 top
1.3.1 内容解析 + 第一行: * 与w命令一样 + 第二行: Tasks * Ntotal: 当前多少个进程 * N running: 当前运行的进程数 * N sleeping: 睡眠状态的进程数 * N stopped: 停止的进程数 * N zombie: 僵死的进程数 + 第三行: %Cpu(s) * 0.1%us 用户的进程占用CPU时间百分比 * 0.2%sy 内核的占用CPU时间百分比 * 0.2%ni renice 值为负的用户进程占用CPU时间百分比, nice 是优先级的意思 * 0.2%id 空闲CPU时间百分比 * 0.2%wa 等待I/O 的 CPU时间百分比 * 0.2%hi CPU硬中断时间百分比 * 0.2%si CPU软中断 时间百分比 + 第四行: Kib * 0k total 交换空间总量 * 0k used 使用的交换空间 * 0k free 空闲的交换空间 * 10000k cached: 缓存的交换空间 + 第五行: (后面的内容都是第五行的) * PID 进程ID * USER 进程所有者 * PR 进程优先级 * NI nice 值 * VIRT 占用的虚拟内存 * RES 占用的物理内存 * SHR 使用的共享内存 * S 进行状态S 休眠, R运行, Z僵死, N nice为负 * %CPU 占用的 CPU 百分比 * %MEM 占用内存百分比 TIME+ 占用CPU 时间累加值 COMMAND 启动进程的命令
1.3.2 选项和命令
- 选项
-d 指定刷新的时间间隔
-p 通过指定监控进程ID 来仅仅监控某个进程状态
-s 是top 在安全模式中运行, 去除交互中的潜在危险
-S 使用累计模式
-i 不显示闲置或僵死进程
-c 显示命令行, 而不是命令名
- 命令
# top 命令显示结果是窗口模式, 可以使用top 的交互命令操作
Ctrl+L: 擦写屏幕
K: 使用kill 功能, 可以终止进程号, 如果不能正常终止, 可以使用信号9 强制结束.
i: 忽略闲置和僵尸进程
q: 退出
r 重新安排一个进程优先级, 会提示用户输入进程PID 以及优先级, 默认是10
S 切换到累计模式
s 改变刷新时间
f/F 从当年前闲置中添加/删除 项目
o/O 改变显示项目顺序
l 切换平均负载, 启动时间信息
m 切换内存显示信息
t 切换进程和cpu 状态信息
c 切换命令名称完整度
M 根据占用内存大小排序
P 根据占用CPU 百分比排序
T 根据累计时间排序
W 将设置写入 top /.toprc 文件中, 下次打开使用该配置的设置
1.4 sar 命令
- sar 命令是用于对系统的活动进行报告, 包括读写, 系统调度, 磁盘I/O, CPU 效率, 内存使用率, 进程活动, IPC 有关活动等等.
1.4.1 命令格式以及选项 sar [options] [-O] [-o file] t [n]
t: 采样间隔,
n 采样次数
-o file 将结果放在文件中
- 常用选项
-A: 报告所有信息
-u: 输出CPU 统计信息
-v: 输出 inode, 文件, 以及内核统计信息
-d: 输出每一块设备的活动信息
-r: 输出内存交换空间统计信息
-b: 统计I/O 相关信息
-a: 文件读写情况
-c: 输出 进程信息,
-R: 输出内存页面的统计信息
-y: 终端活动情况
-w: 输出系统交换活动信息
1.4.2 统计CPU信息
[fangfc@node10011 sa]$ sar 1 3 -u
Linux 3.10.0-862.el7.x86_64 (node10011.localdomain) 11/15/2018 _x86_64_ (4 CPU)
11:06:06 PM CPU %user %nice %system %iowait %steal %idle
11:06:07 PM all 0.00 0.00 0.00 0.00 0.00 100.00
11:06:08 PM all 0.00 0.00 0.00 0.00 0.00 100.00
11:06:09 PM all 0.00 0.00 0.00 0.25 0.00 99.75
Average: all 0.00 0.00 0.00 0.08 0.00 99.92
[fangfc@node10011 sa]$
- 第一行
- 系统内核版本,以及主机名
- 第二行 CPU
- %user: 用户级别占比
- %nice: 用级别nice操作 占比
- %system 系统内核 占比
- %iowait 用于等待 I/O操作 占比
- %steal 管理员虚拟金城提供服务占比
- %idle 空闲占比
- 最后一行
- 平均信息
1.4.3 统计网络流量信息
[fangfc@node10011 sa]$ sar 1 1 -n DEV
Linux 3.10.0-862.el7.x86_64 (node10011.localdomain) 11/15/2018 _x86_64_ (4 CPU)
11:16:36 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11:16:37 PM ens34 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:16:37 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:16:37 PM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00
-
显示分析:
-
第二行:
- 11:12:45 PM 统计时间
- IFACE 设备名
- rxpck/s 每秒接受数据包
- txpck/s 每秒发送数据包
- rxkB/s 每秒接收 数据字节
- txkB/s 每秒发送 数据字节
- rxcmp/s 每秒接收 压缩数据包
- txcmp/s 每秒发送 压缩数据包
- rxmcst/s 每秒接收 多播数据包
-
网络设备
DEV: 网络接口信息
EDEV 网络错误信息
NFS 网络文件系统客户端信息
NFSD 网络文件系统
SOCK 套接字信息
ALL 所有
1.5 nload
1.5.1 nload 是用来监视网络状态和各ip使用速率, nload 显示有上下两块, 上版本分显示 Incoming(流入流量) 下半部分Outgoing 网卡出口流量
1.5.2 选项:
-a: 全部数据的刷新周期,单位是s, 默认300
-i: 进入网卡流量图, 显示比例最大值设置, 默认10240 kBit/s
-m: 不显示流量图, 只显示统计信息
-o: 出口网络流量图的显示最大比例社设置, 默认 10240 kBit/s
-t: 显示数据刷新时间间隔, 单位 ms, 默认500
-u: 右侧 curr, Avg, Min,Ma数据单位
h,b,k,m,g: auto, Bit/s, kBit/s, MBit/s
H,B,K,M,G: auto,Byte/s, kByte/s, MByte/s
-U 社会中右侧 Ttl 耽误额数据, 默认是自动变化的,
DEVICES: 指定监控的网卡设备
1.5.3 内容详解
Curr: 当前部分(上传和下载分开计算), 流量. Avg: 平均流量 Min: 最小流量 Max: 最大流量 Ttl: 流量总和
1.6 磁盘状态命令
iotstat -x 磁盘使用 iotop 磁盘使用
iostat 工具可以查看到系统IO 状态信息
[fangfc@node10011 sa]$ iostat
Linux 3.10.0-862.el7.x86_64 (node10011.localdomain) 11/15/2018 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.11 0.00 0.10 0.01 0.00 99.78
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.01 0.37 0.00 4312 0
sdc 0.01 0.18 0.00 2128 0
sda 0.73 31.84 73.12 374658 860256
dm-0 0.71 29.31 72.94 344871 858167
dm-1 0.01 0.19 0.00 2228 0
- 常用选项
-c: 可用来插入部分cpu 状态信息
-k: 某些使用 block 强制使用 kilobytes 为单位
-d: 显示磁盘状态
-x: 输出更多信息
1.7 free 命令
free 命令用于查看系统内存相关信息
total used free shared buff/cache available
Mem: 3863568 128860 2591292 12008 1143416 3462852
Swap: 2097148 0 2097148
1.7.1 显示分析
- 第一行:
- total 总量
- used 已使用
- free 剩余
- shared 共享使用的
- buffer/cache 用于buffer和cache的
- available 包含buffer和cache 的剩余内存
1.7.2 选项
-h: 人性化显示
-b: 以 Byte 为单位
-k: 以 KB 为单位
-m: 以 MB 为单位
-o: 不显示缓冲区调节
-s <间隔> :持续观察
-t: 显示内存总和列
1.8 ps 命令
1.8.1 概述 ps 命令是 Process Status 的缩写, 用于列出系统的当前运行的进程, 如果需要动态显示可以使用 top 命令. ps 命令常用于分析和配合kill 终结进程使用.
- ps 命令支持三种语法格式
- UNIX 风格: 选项可以组合在一起, 并且选项前必须有 `-`` 连接字符
- BSD: 选项可以组合在一起, 但是不能有
-
连接字符 - GUN: 选项前面要有两个
--
连接字符, 且选项时完整的长输出
1.8.2 命令选项
这的是常用的Unix 风格选项
-d: 显示所有进程,不包括当前会话的用户的
-e: 显示所有进程
-f: 全格式显示
-H: 显示树状结构, 表示程序之间关系
-l: 长格式显示
-w: 宽输出
BSD 风格的选喜感
a 所有进程
c 显示进程的真实名称
f 显示进程间关系
r 显示执行进程的 终端号
T 显示当前终端的所有进程
u 以用户为主显示程序状况
x 显示所有程序, 不用终端来区分
1.8.3 显示解析
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 进程运行用户
- PID: 进程PID 号
- %CPU 进程占用 CPU 百分比
- %MEM 进程占用 内存百分比
- VSZ 进程占用 虚拟内存
- RSS 进程占用 虚拟内存
- TTY 启动进程的 终端
- STAT 当前进程的状态
- START 启动进程的时间
- TIME 进程运行的时间
- COMMAND 启动进程的命令
1.9 网络管理命令
1.9.1 概述 ss 命令是用于显示网络状态信息, 可以显示PACKET socket, TCP,UDP, DCCP,RAW, 等等呢个统计, 比其他工具展示跟多信息, 非常实用快速有效.
1.9.2 选项
-n: 不根据IP 反解主机名
-r: 解析主机名
-a: 显示所有套接字
-l: 显示被监听的 socekts
-o: 显示计时器信息
-e: 显示详细的 sockets 信息
-m: 显示socket 的内存使用
-p: 显示进程号
-i: 显示tcp 内部信息
-s: 显示socket 使用汇总
-4: 只显示ipv4 相关的sockets
-6: 只显示 IPv6 相关 sockets
-0: 显示包经过的网络接口
-t: 显示 tcp
-u: 显示 udp
-d: 显示 dccp
-w: 显示 raw
-x: 显示 Unix 套接字
-f: 显示指定的类型的套接字
FAMILY := {inet|inet6|link|unix|netlink|vsock|help}
-k: 关闭指定的sockets
-H: 不显示 首行
1.9.3 输出解析
[fangfc@node10011 ~]$ ss -tan
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
ESTAB 0 52 192.168.10.11:22 192.168.10.1:2105
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
- State : 该套接字的状态,
- LISTNE 表示正在监听
- ESTAB establish 表示已建立连接
- syn-sent 请求连接
- syn-recv 请求最后等待对方确认
- fin-wait-1 主动关闭, 主机发起
- fin-wait-2 主动关闭, 主机已确认关闭连接确认, 等待对方关闭
- time-wait 完成双向连接关闭, 等待分组消失
- closed 已被关闭了的
- close-wait 被动关闭, 收到对方发起关闭, 并已确认
- last-ack 被动关闭, 等待最后一个确认,
- closing 双方同时尝试关闭,
- Recv-Q: 显示网络接收队列, 爱表饰收到数据以在本地接受缓冲, 但是还有多少没有被进程取走
- Send-Q: 网络发送队列, 对方没有收到的数据, 或者没有 ACK 的, 还是本地缓冲区
- Local Address:Port: 本地的IP地址和端口/ 或UNIX套接字地址
- Peer Address:Port: 远程的地址和端口
1.10 tcpdump 命令
1.10.1 概述 tcpdump 是用于 dump the traffic on a network, 根据定义的网络数据包获取方式来截获包的分析工具, 支持对网络层, 协议, 主机, 网络, 端口, 进行过滤 并且提供 and | or | not 等 逻辑判断.
1.10.2 格式 和选项 tcpdump [-DenNqvX] [-c count] [ -F file ] [ -i interface ] [ -r file ] [ -s snaple ] [ -w file ] [ expression ]
- 常用选项
# 抓包选项
-c: 指定抓取包的数量, 注意是最终获取这么多个包, 中间可能处理了 N个包才获得了 指定的数量
-i interface: 指定给你监听的设备接口,
-n: 对地址 以ip方式显示, 不过不指定, 则会对 ip进行解析
-nn: 除了-n , 对端口也进行 数值显示
-N: 不打印 host 的域名部分, 例如 tcphost 或则打印 host 而不是 'xx.xxx.xx'
-P: 指定要抓的是流入还是流出, in, out, inout 默认是 Inout
-s len: 指定抓取的包长度是 len, 不设置的话是 65536字节, 对于过大的包可能会断裂
输入行出现[!proto] 标志(proto 实际是 协议名), 但是 抓取len 越长, 包处理时间越长,
# 输出选项
-e: 输出美行中都包括数据链路头部信息, 例如源MAC, 目标MAC
-q: 快速打印输出, 即答应很少的协议相关信息, 从而输出行都比较简短
-X: 输出包的头部数据, 以16进制和 ASCII 两种方式同时输出
-XX: 输出包的头部数据, 以16进制和 ASCII 两种方式同时输出, 更加详细
-v: 当分析和打印的时候, 产生更加详细输出
-vv: 产生 比-v 更加详细输出
-vvv: 产生 比-vvv 更加详细输出
# 其他功能性选项
-D: 列出可用于抓包的接口, 会列出 接口数量和接口号
-F: 从文件中读取抓包的表达式,
-w: 抓包输出到文件, 可以配合 -G time 选项输出文件每time 秒自动切换文件,
-r: 从 -w 写入的文件中读取数据,
1.10.2 显示
[fangfc@node10011 ~]$ sudo tcpdump -i ens33 tcp port 80 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
01:38:27.262365 IP 192.168.10.1.3882 > 192.168.10.11.80: Flags [S], seq 1194152086, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:38:27.262455 IP 192.168.10.11.80 > 192.168.10.1.3882: Flags [S.], seq 2043345935, ack 1194152087, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
01:38:27.262768 IP 192.168.10.1.3882 > 192.168.10.11.80: Flags [.], ack 1, win 2053, length 0
01:38:27.267583 IP 192.168.10.1.3680 > 192.168.10.11.80: Flags [P.], seq 872129039:872129497, ack 1174294605, win 2053, length 458: HTTP: GET / HTTP/1.1
01:38:27.268427 IP 192.168.10.11.80 > 192.168.10.1.3680: Flags [P.], seq 1:239, ack 458, win 287, length 238: HTTP: HTTP/1.1 200 OK
01:38:27.268765 IP 192.168.10.11.80 > 192.168.10.1.3680: Flags [P.], seq 239:851, ack 458, win 287, length 612: HTTP
01:38:27.269019 IP 192.168.10.1.3680 > 192.168.10.11.80: Flags [.], ack 851, win 2049, length 0
01:38:27.357732 IP 192.168.10.1.3680 > 192.168.10.11.80: Flags [P.], seq 458:883, ack 851, win 2049, length 425: HTTP: GET /favicon.ico HTTP/1.1
01:38:27.357957 IP 192.168.10.11.80 > 192.168.10.1.3680: Flags [P.], seq 851:1577, ack 883, win 296, length 726: HTTP: HTTP/1.1 404 Not Found
01:38:27.399419 IP 192.168.10.1.3680 > 192.168.10.11.80: Flags [.], ack 1577, win 2053, length 0
01:39:12.263573 IP 192.168.10.1.3882 > 192.168.10.11.80: Flags [.], seq 0:1, ack 1, win 2053, length 1: HTTP
-
第一行: 提示可以使用 -v或-vv 显示更详细信息
-
第二行: 说明抓取的接口(ens33), 连接烈性, 以及总抓取的字节数
-
第三行:
- 01:38:27.262365 抓取到的时间
- IP 192.168.10.1.3882 > 192.168.10.11.80: :包的发起IP > 接收IP
- Flags []: S表示(SYN), F(FIN), p(PSUH), R(RST), W(ECT CWT), E(ENC-ECHO)
- seq 1:239 seq 表示序列号, 是一个随机的数字, 第一个是对方发过来的seq, 第二个是自己创建的 seq, 当下一个包发送的时候对方需要携带本机创建的seq
- length 238: 包长度
- HTTP: HTTP/1.1 200 OK 包的内容
-
使用-v 在抓http 请求时还可以获取到更多信息:
01:55:58.401045 IP (tos 0x0, ttl 128, id 30148, offset 0, flags [DF], proto TCP (6), length 562)
192.168.10.1.5555 > 192.168.10.11.80: Flags [P.], cksum 0x53cb (correct), seq 3671249986:3671250508, ack 927332015, win 2052, length 522: HTTP, length: 522
GET / HTTP/1.1
Host: 192.168.10.11
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh,zh-TW;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6
If-None-Match: "5bd19726-264"
If-Modified-Since: Thu, 25 Oct 2018 10:12:54 GMT
- 这里就获取了 http请求的 协议, 以及版本, 主机地址, 请求连接类型, 等等信息.
1.11 ip 命令
用于管理网络设备, 可以管理网络接口, 路由表, apr, 显示不同统计数据等等设置. ip命令可以操作等功能非常多, 这里只做对 网卡的操作
1.11.1 ip地址相关操作
-
ip address {add|change|replace} IFADDR dev IFNAME {LTFETIME}
- 用于添加/修改/替换 IP地址 在对应的 网卡上
-
ip address del IFADDR dev IFNAME [mngtmpname]
- 删除ip地址, 在对应的网络设备
-
ip address show [dev IFNAME] [ scope SCOPE-ID ] [ master DEVICE ]
- 显示IP地址, 可以指定对应的 网络设别
-
显示ip
- 添加ip
- 删除ip
1.11.2 网卡相关操作
-
使用 ip link 的相关操作, 可以对网络接口设备进行管理.
-
ip link add [link DEV] [name] NAME
- 添加一个网络设备
-
ip link delete [DEVICE | dev DEVICE | group DEVGROUP} type TYPE [ARGS]
- 用于删除一个网络设备
-
ip link set {DEVICE | dev DEVICE | group DEVGROUP}
- 用于设置一个网络设备
-
常用操作
-
显示一个网络设备现相关信息, 使用-s 可以查看该设备流量情况
- 停用一个网络设备,
ip link set DEVICE down
-
启用
ip link set DEVICE up
-
重命名
ip link ste DEVICE name NEWNAME
END