任务列表:
10.1 使用w查看系统负载
10.2 vmstat命令
10.3 top命令
10.4 sar命令
10.5 nload命令
10.6 监控io性能
10.7 free命令
10.8 ps命令
10.9 查看网络状态
10.10 linux下抓包
10.11 Linux网络相关
扩展
tcp三次握手四次挥手(重点) http://www.doc88.com/p-9913773324388.html
tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
10.1 使用w查看系统负载
10.1.1 w和uptmie命令。
- user 登录用户名称
- TTY 用户登录所使用的终端。tty开头的是本地登录。pts/开头的是远程用户。
- FORM 远程用户所使用的IP。
- LOGIN@ 登录时间
- uptime命令不会显示用户相关信息,所以会更精简。
10.1.2 load average
- 三个数字的含义分别表示,一分种,五分钟和十五分钟的系统负载。
- 当一分种系统载,接近CPU的processor数量时的状态是最理想的。
比如CPU有八个processor,那么一分钟负载接近8是最理想的。
说明这一分钟内,每个processor都有活干,又不怎么累。
10.1.3 查看CPU相关信息:
cat /proc/cpuinfo
10.2 vmstat命令
10.2.1 vmstat命令使用方法
- vmstat 1
每一秒显示当前系统状态。按ctrl+c退出。 - vmstat 1 5
每一秒显示当前系统状态。五秒后退出。
10.2.2 需要关注的列
- r
run的简写。表示有多少进程处于run的状态。即使进程处于排队等待使用cpu也被算进r里。 - b
block的简写。表示有多少进程被cpu以外的资源(比如硬盘和网络)阻断,处于等待状态。 - swpd
内存不够时,交换分区会写入数据。如果频繁有数字变动,说明内存不足。 - buff&cache
- si
写入内存默认单位为k - so
从内存读取默认单位为k - bi
从磁盘读出数据到内存 - bo
内存写入磁盘数据。 - us
用户所占用的cpu资源,以百分比显示。 - sy
系统所占用的cpu资源。 - id
cpu资源的空闲状态。和us、sy相加等于一百。
通这us sy id这三个数字可以反映用户和系统所占用资源的关系。 - wa
等待使用cpu资源的状态,这个数值高,说明cpu不够用了。
10.3 top命令
10.3.1 top
- 和uptime显示的内容一样。
10.3.2 Tasks进程情况
- total 任务总数
- running 正在运行的任务数量
- sleeping 正在休眠的任务数量
- stopped 停止的任务数量
- zombie 僵尸任务数量(主进程被终止,但是子进程没有终止。)
10.3.3 %Cpu(s) cpu占用情况
- us 用户占用百分比
- sy 系统占用百分比
- id 空闲情况
- st 被偷走的资源(一般是虚拟化占用)
- 默认是所有CPU的平均值,按数字键1可以显示所有CPU的情况。
10.3.4KiB Mem 内存情况
- total 合计
- free 空闲
- used 使用中
- buff/cache 缓冲区
10.3.5swap使用情况
10.3.6 工作区
- 默认以CPU占用百分排序,占用多的排在前边。
- PID 程序的进程编号。kill+PID可以杀死该进程。也可以根据这个编号查询到相关内容。
- USER 程序的使用者。
- PR
- NI
- VIRT
- RES 物理内存大小,单位是千字节(KiB)。
- SHR
- %CPU cpu占用百分比。按大写“P”键可以按cpu占用排序。
- %MEM 内存占用百分比。按大写“M”键可以按内存占用排序。
10.3.7 top -c
- 在COMMAND下显示具体的命令。即该命令的绝对路径。
10.3.8 top -bn1
- 静态显示所有进程情况,适合脚本使用。
10.4 sar命令
10.4.1 安装sar
yum install -y sysstat
- /var/log/sa是存放sar历史文件的目录。
- sar 每十分钟都保存一次系统的状态。
- /var/log/sa下一般会有两个文件,一个是sa日期另一个是sar日期。
- sa17是一个二进制文件,只能用sar -f加载
- sar17可以直接使用cat命令查看。
10.4.2 sar -n
- sar -n DEV 1 10
每隔一秒显示一次网卡状态,显示十次。 - rxpck/s 每秒接收到的数据包。数量过万,应该判断是否被攻击。
- txpck/s 每秒发送出的数据包。
- rxkB/s 每秒接收到的数据量,单位kb
- txkB/s 每秒发送出的数据量,单位kb
10.4.3 sar -q
- 查询系统负载。ldavg-1是一分钟内的情况。ldavg-5是五分钟,-15是十五分钟。
10.5 nload命令
10.5.1 安装nload
yum install -y epel-release
yum insatll -y nload
10.5.2
10.6 监控io性能
10.6.1 为什么要监控IO性能:
- 当内存和cpu占用并不是很高时,系统负载依然很大,这时就应该检查瓶颈是否出现在磁盘上。
10.6.2 iostat
- iostat也包含于sysstat包内,安装过sar命令就会安装它。
- iostat 会输出现在的磁盘吞吐。
- iostat n
n是数字,每n秒显示一次当前IO使用情况。 - iostat -x
- 当磁盘读写数据量不大时,等待时间依然很大时,说明磁盘有问题。
10.6.3 iotop
10.7 free
10.7.1free 选项
- free -m 以兆字节显示容量
- free -h 显示容量自动适应单位
10.7.2 每列标题
- total 总计大小
- used 使用中的容量
- free 空闲容量
- shared 共享空间
- buff/cache 缓冲/缓存区。buff是指数据从CPU到磁盘的缓冲区,cache是指数据从磁盘到CPU的缓存区。
- available 可用空间,是指free加上还没有用完的buff/cache。
- 内存总大小公式:total=used+free+buff/cache
- 需要关注的是available而不是free
10.8 ps命令
ps命令的作用是将当前进程的使用情况列出来。
10.8.1 ps命令常用选项
- 常用选项 ps aux 显示所有内容。
- USER列 使用程序的用户
- PID 进程编号
- %CPU %MEM 内存和CPU使用占比
- VSZ 虚拟内存占用
- RSS 真实内存占用
- TTY 连接终端
- STAT 进程状态
- TIME 运行时间
- COMMAND 执行程序所依赖的具体命令,包含绝对路径。
- STAT内容说明
D 不能中断的进程
R run状态中的进程
S sleep状态中的进程
T 暂停的进程,一般是用户主动请求暂停
Z 僵尸进程
< 高优先级进程
N 低优先级进程
10.8.2 ps的常用方法
- ps aux |grep 关键字
查找需要的内容,比如程序的名称,进程的PID等等。 - ps elf |grep 关键字
同上。
10.8.3 当遇到一个未知的进程占用了很大的资源,有可能是被黑了。
- 这时应该判断,是否通过PID将这个进程杀死。
直播笔记
1,三次握手小例子:
- 第一次握手:
在红军时代,A连和B连分在左右翼,约定在几时几分一同发起打击。
这个几时几分的信息就需要人工通过通讯员来走路传递。
所以A连指挥官派出通讯员。 - 第二次握手:
假设通讯员到达了B连,并且告知了B连指挥官几时几分。
B连指挥官一定会让通讯员再回去通知A连指挥官,可怜的通讯员只能冒着危险返回A连。
因为A连指挥官看不到通讯员返回的话,不知道几时几分这个信息到底传达到了B连没有。 - 第三次握手:
现在B连指挥官开始担心通讯员是否回到了A连。
如果没回到,B连指挥官会设身处地的想一想A连指挥官见不到返回的通讯员,肯定是不敢打的。
所以B连指挥官最盼望的是再次看到通讯员出现在B连,所以A连指挥官会让通讯员再回B连一次。
2,关闭连接与四次挥手
由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭。
这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接。
收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了。
但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。
首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
-
第一次挥手:
Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 -
第二次挥手:
Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。 -
第三次挥手:
Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 -
CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”。
-
LISTEN :表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。
-
SYN_RCVD :表示接收到了SYN报文。
在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态。
很短暂,基本上用netstat很难看到这种状态,除非故意写一个监测程序。
将三次TCP握手过程中最后一个ACK报文不予发送。
当TCP连接处于此状态时,再收到客户端的ACK报文,它就会进入到ESTABLISHED 状态。 -
SYN_SENT :这个状态与SYN_RCVD状态相呼应。
当客户端SOCKET执行connect()进行连接时,它首先发送SYN报文。
然后随即进入到SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。
SYN_SENT 状态表示客户端已发送SYN报文。 -
ESTABLISHED :表示TCP连接已经成功建立。
-
FIN_WAIT_1 :这个状态得好好解释一下,其实FIN_WAIT_1 和FIN_WAIT_2。 两种状态的真正含义都是表示等待对方的FIN报文。
而这两种状态的区别是:
FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET进入到FIN_WAIT_1 状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态。当然在实际的正常情况下,无论对方处于任何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1 状态一般是比较难见到的,而FIN_WAIT_2状态有时仍可以用netstat看到。
FIN_WAIT_2 :上面已经解释了这种状态的由来,实际上FIN_WAIT_2状态下的SOCKET表示半连接,即有一方调用close()主动要求关闭连接。注意:FIN_WAIT_2 是没有超时的(不像TIME_WAIT状态),这种状态下如果对方不关闭(不配合完成4次挥手过程),那这个 FIN_WAIT_2 状态将一直保持到系统重启,越来越多的FIN_WAIT_2 状态会导致内核crash。 -
TIME_WAIT :表示收到了对方的FIN报文,并发送出了ACK报文。
TIME_WAIT状态下的TCP连接会等待2*MSL
(Max SegmentLifetime,最大分段生存期,指一个TCP报文在Internet上的最长生存时间。每个具体的TCP协议实现都必须选择一个确定的MSL值,RFC 1122建议是2分钟,但BSD传统实现采用了30秒,Linux可以cat/proc/sys/net/ipv4/tcp_fin_timeout看到本机的这个值)。
然后即可回到CLOSED 可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。 -
CLOSING :这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。
正常情况下,当一方发送FIN报文后。
按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。
但是CLOSING 状态表示一方发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。
什么情况下会出现此种情况呢?
那就是当双方几乎在同时close()一个SOCKET的话,就出现了双方同时发送FIN报文的情况。
这是就会出现CLOSING 状态,表示双方都正在关闭SOCKET连接。 -
CLOSE_WAIT :表示正在等待关闭。
怎么理解呢?
当对方close()一个SOCKET后发送FIN报文给自己,你的系统毫无疑问地将会回应一个ACK报文给对方。
此时TCP连接则进入到CLOSE_WAIT状态。
接下来呢,你需要检查自己是否还有数据要发送给对方。
如果没有的话,那你也就可以close()这个SOCKET并发送FIN报文给对方,即关闭自己到对方这个方向的连接。
有数据的话则看程序的策略,继续发送或丢弃。
简单地说,当你处于CLOSE_WAIT 状态下,需要完成的事情是等待你去关闭连接。 -
LAST_ACK :当被动关闭的一方在发送FIN报文后,等待对方的ACK报文的时候,就处于LAST_ACK 状态。
当收到对方的ACK报文后,也就可以进入到CLOSED 可用状态了。
3,ip命令使用
1. 设置和删除IP
ip addr add 192.168.10.10/24 dev eth0
ip addr show eth0
ip addr del 192.168.10.10/24 dev eth0
2. 路由相关设置
ip route show
ip route add default via 192.168.10.1
ip route add 192.168.5.0/24 dev eth0
ip route del 192.168.10.1
3. 另外用route命令来管理路由:
(a)、网络路由
route add -net 192.168.1.0/24 gw 172.16.1.106
(b)、主机路由
route add -host 192.168.1.110 gw 172.16.1.106
(c)、默认路由
route add default gw 172.16.1.106
或
route add -net 0.0.0.0 gw 172.16.1.106
(d)、删除路由
route del -host 192.168.1.110
route del -net 192.168.1.0/24
4. 显示网络统计数据
ip -s link
ip -s -s link ls eth0
5. 停止开启网卡
ip link set eth0 down
ip linke set eth0 up
6. 更改网卡名字
ip link set ens37 name eth1
如何永久保存更改后网卡的名字:https://blog.csdn.net/jyusun/article/details/71513086