保障4-0413任务打卡

任务列表:
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命令。

9-6.png

  • user 登录用户名称
  • TTY 用户登录所使用的终端。tty开头的是本地登录。pts/开头的是远程用户。
  • FORM 远程用户所使用的IP。
  • LOGIN@ 登录时间
  • uptime命令不会显示用户相关信息,所以会更精简。
    9-7.png

10.1.2 load average

  • 三个数字的含义分别表示,一分种,五分钟和十五分钟的系统负载。
  • 当一分种系统载,接近CPU的processor数量时的状态是最理想的。
    比如CPU有八个processor,那么一分钟负载接近8是最理想的。
    说明这一分钟内,每个processor都有活干,又不怎么累。

10.1.3 查看CPU相关信息:

cat /proc/cpuinfo

10.2 vmstat命令

9-8.png

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-9.png

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
    10-10.png
    每隔一秒显示一次网卡状态,显示十次。
  • rxpck/s 每秒接收到的数据包。数量过万,应该判断是否被攻击。
  • txpck/s 每秒发送出的数据包。
  • rxkB/s 每秒接收到的数据量,单位kb
  • txkB/s 每秒发送出的数据量,单位kb

10.4.3 sar -q

10-11.png

  • 查询系统负载。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-12.png

10.6 监控io性能

10.6.1 为什么要监控IO性能:

  • 当内存和cpu占用并不是很高时,系统负载依然很大,这时就应该检查瓶颈是否出现在磁盘上。

10.6.2 iostat

  • iostat也包含于sysstat包内,安装过sar命令就会安装它。
  • iostat 会输出现在的磁盘吞吐。
    10-13.png
  • iostat n
    n是数字,每n秒显示一次当前IO使用情况。
  • iostat -x
    10-14.png
  • 当磁盘读写数据量不大时,等待时间依然很大时,说明磁盘有问题。

10.6.3 iotop

  • 安装
    yum install -y iotop
  • 10-15.png
  • 可以查看每一个具体的程序或进程所使用磁盘的情况。

10.7 free

10-16.png

10.7.1free 选项

  • free -m 以兆字节显示容量
  • free -h 显示容量自动适应单位

10.7.2 每列标题

  • total 总计大小
  • used 使用中的容量
  • free 空闲容量
  • shared 共享空间
  • buff/cache 缓冲/缓存区。buff是指数据从CPU到磁盘的缓冲区,cache是指数据从磁盘到CPU的缓存区。
    10-17.png
  • available 可用空间,是指free加上还没有用完的buff/cache。
  • 内存总大小公式:total=used+free+buff/cache
  • 需要关注的是available而不是free

10.8 ps命令

ps命令的作用是将当前进程的使用情况列出来。

10.8.1 ps命令常用选项

  • 常用选项 ps aux 显示所有内容。
    10-18.png
  • 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连一次。

这就是三次握手
9-2.png

2,关闭连接与四次挥手

9-3.png

由于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状态。

  • 第四次挥手:
    Client发送ACK,Server收到后正式进入CLOSED状态。
    9-4.png
    9-5.png

  • 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

猜你喜欢

转载自blog.csdn.net/weixin_43418192/article/details/89310025
今日推荐