监控系统的状态
10.1 使用w 查看当前系统负载。
该命令显示的信息有,第一行从左至右显示的信息依次为: 时间,系统运行时间,登录用户数,平均负载。,从第2行开始的所有行则告诉我们:当前的用户名及其登录地址。我们最关注第1行的loaad average:后面的3个数值。load average第1个数值表示1分钟内的系统的平均负载值,第2个数值表示5分钟负载的平均负载值,第3个数值表示15分钟内的负载平均值。我们重要看第一个数值,它表示单位时间段内使用CPU的活动进程数,该值越大就说明服务器压力越大。服务器的CPU数量为8.那么小于8就说明当前服务器没有压力, 查看服务器有几个CPU的方法如下
#cat /proc/cpuinfo
10.2 vmstat 命令
用vmstat命令健康系统的状态
vmstat命令打印的结果共分为6部分: procs, memory ,swap ,io, system , cpu .重点关注 r, b , si ,so , bi , bo, 这几列信息。
procs 显示进程的相关信息。
r (run):表示运行或等待CPU时间的进程数。
b(block):表示等待资源进程数。这个资源指的是I/O,内存等。
memory显示内存的相关信息
swpd:表示切换到交换分区中内存数量,单位为KB。
free:表示当前空闲的内存数量。
buff:表示(即将写入磁盘的)缓冲大小。
cache:表示(从磁盘中读取的)缓存。
swap显示内存的交换情况。
si:表示由内存交换区写入内存的数据量。
so:表示由内存写入交换区的数据量,单位为KB.
io显示磁盘的使用情况。
bi:表示从块设备读取数据的量(读磁盘),单位为KB.
bo:表示从块设备写入数据的量(写磁盘),单位为KB.
我们使用vmstat查看系统状态时,通常都是使用如下形式:
#vmstat 1 5 或者 #vmstat
#vmstat 1 5表示每隔1秒输出一次状态,共输出5次;后一条命令表示每隔1秒输出一次状态且以在输出,除非按 ctrl+c 结束。
10.3 top命令
用top命令显示进程所占的系统资源
#top
top命令用于动态监控进程所占的系统资源,每隔3秒变一次。它的特点是把占用系统资源CPU,内存,磁盘I/O等。最高的进程放到最前面。用top重点查看的还是下面的进程使用系统资源的详细状况,关注%cpu ,%MEM和command这几项代表的意义。
RES:表示进程所占的内存大小。
%MEM:表示内存的百分比。
常用的命令 top -bn1,它表示非动态打印系统资源的使用情况。
# top -bn1|head
#top -bn1和top命令唯一区别就是,它一次性输出所有信息而非动态显示。
10.4 sar命令
用sar 命令,它可以监控系统几乎所有资源的状态,比如平均负载,网卡流量,磁盘状态。内存使用等。它可以打印历史,可以显示当天从零点开始到当前时刻的系统状态信息。
yum install -y sysstat 安装 sar命令
1)查看网卡流量 sar -n DEV
这个命令会把当天记录的网卡信息打印出来,每隔10分钟记录一次。
IFACE:表示设备名称
rxpck/s:表示每秒进入收取的包的数量。
txpck/s:表示每秒发送出去的包的数量。
rxkB/s:表示每秒收取的数据量
txkB/s:表示每秒发送的数据量。
正常情况下服务器网卡流量不这么高,除非被攻击或者自己在复制数据,但是也可以实时查看网卡流量。
#sar -n DEV 1 5
同时使用-f选项查看某一天的网卡流量历史,后面跟文件名,sar的库文件一定在/var/log/sa/目录下
#sar -n DEV -f /var/log/sa/sa23
3)查看历史负载sar -q
#sar -q
sar -q 命令有助于我们查看服务器在过去某个时间的负载状况。sar命令可以查看网卡流量。
10.5 用nload命令查看网卡流量
安装 nload命令#yum install -y epel-release; yuminstall -y nload
Incoming:为进入网卡的流量, Outgoing:为网卡出去的流量。我们关注重点是Curr 那行的数据其单位也可以动态自动调整,按q退出该界面。
10.6 用free命令查看内存的使用状况
#free
total:内存总大小。
used:真正使用的实际内存大小。
free:剩余物理内存大小。(没有被分配,纯剩余)。
shared:共享内存大小,不用关注它。
buff/cache:buff和cache都是一部分内存,内存的作用是缓解CPU和IO的速度差距的。
buff:数据经过CPU计算,即将要写入磁盘。
cache:CPU要计算时,需要把数据从磁盘中读出来,临时先放到内存中,这部分内存就是cache。
free命令还可以加-m和-g选项(分别以MB或GB为单位)打印内存的使用情况,同时也支持 -h 选项。
#free -m
#free -g
#free -h
10.7 ps命令
用ps命令查看系统进程
命令格式ps 【选项】
-a:显示与终端相关的所有进程,包含每个进程的完整路径。
-u:显示进程的用户信息。
-e:显示所有进程。
常用#ps aux # ps -elf命令如下
#ps aux
输出信息中各列的说明如下:
USER:该进程属于的用户。
PID:该进程的进程号。
%CPU:该进程使用掉的CPU资源百分比。
%MEM:A该进程所占用的物理内存百分比。
VSZ:表示进程使用掉的虚拟内存量,(单位为Kbytes)
RSS:该进程占用的固定的内存量。
TTY:该进程是在哪个终端机上面运作的,若与终端机无关,则显示? tty1-tty6是本机上面的登入者进程,若为pts/o,则表示由网络连接进主机的进程。
STAT:该进程目前的状态,主要的状态包括如下几种:
R:正在运行,或者是可以运行。
S:正在中断睡眠中,可以由某些信号(signal)唤醒。
D:不可中断睡眠。
T:正在侦测或者是停止了。
Z:已经终止,但是其父进程无法正常终止它,从而变成zombie(僵尸)进程的状态。
+:前台进程。
l:多线程进程。
N:低优先级的进程。
<:高优先级进程。
s:进程的领导者。
START:该进程被触发启动时间。
TIME:该进程实际使用CPU运作的时间。
COMMAND:该进程的实际命令。
#ps -elf
将ps连同管道符一起使用,用来查看某个进程或者它的数量。
#ps aux| grep -c sshd
10.8 查看网络状态
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表实际的网络连接,以及每一个网络接口信息,可以让用户得知目前有哪些网络连接正在运行。
1) netstat命令格式:
-a:显示所有socket,包括正在监听的。
-c:每隔1秒就重新显示一遍,直到用户中断。
-i:显示所有网络接口信息,格式同ifconfig -e。
-n: 以网络IP地址代替名称,显示网络连接的情形。
-r:显示核心路由表,格式同route -e。
t:显示TCP 协议的连接情况。
u:显示UDP协议连接情况。
-v:显示正在进行的工作。
2)查看监听端口 #netstat -lpn
3)查看网络连接状态#netstat -an
4)只看TCP的不包含socket #netstat -lntp
10.9 监控io性能
监控系统状态
iostat -x磁盘使用
iotop 磁盘使用
1) iostat 加-x选项,作用将用于显示和io相关的扩展数据
#iostat -x
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;
wsec/:每秒写入的扇区数。
rKB/s:The number of read requests that were issued to the device per second;
wKB/s:The number of write requests that were issued to the device per second;
avgrq-sz 平均请求扇区的大小
avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
2)iotop命令
iotop 是一个用来监视磁盘I/O使用状况的top类工具,可以监测到哪一个程序使用的磁盘IO的信息。
svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
10.10 linux 下抓包
监控系统状态
抓包工具 tcpdump
用法:tcpdump -nn
tcpdump -nn -i ens33
tcpdump -nn port 80
tcpdump -nn not port 22and host 192.168.0.100
tcpdump -nn -c 100 -w 1.cap
10.1 tcpdump是Linux下面的一个开源的抓包工具,和Windows下面的wireshark抓包工具一样支持抓取指定网口,目的地址,指定源地址,指定端口,指定协议的数据。
10.2安装 tcpdump yum install -y tcpdump
10.3监听指定网络接口的数据包。
10.4监听指定端的数据。
10.5 tcpdump 参数:
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
10.11 Linux网络相关
ifconfig查看网卡ip(yum install net-tools)
ifup ens33/ifdown ens33 :启动网卡/关闭网卡 ens33
设定虚拟网卡ens33:1
mill -tool ens33查看网卡是否连接。
ethtool ens33 也可以查看网卡是否连接。
更改主机名 hostnamectl set-hostname aminglinux
DNS配置文件/etc/resolv .conf
/etc/hosts文件
11.1 ifconfig查看网卡IP
说明 ifconfig命令显示的内容:
eth0 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是 00:50:56:BF:26:20
inet addr 用来表示网卡的IP地址,此网卡的 IP地址是 192.168.120.204,广播地址, Bcast:192.168.120.255,掩码地址Mask:255.255.255.0
lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)
第二行:网卡的IP地址、子网、掩码
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节
第四、五行:接收、发送数据包情况统计
第七行:接收、发送数据字节数统计信息。
11.2 ifconfig 参数:
up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
11.3启动关闭指定网卡
ifup enth33
ifdown enth33
11.4查看网络是否连接。 #mill -tool ens33
#ethtool ens33
#mii-tool ens33显示link ok说明网卡为连接状态。如果显示no link,说明网卡坏了或者没有连接网线。
#ethtool ens33 显示link detected:yes表示连接网络。
11.5更改主机名
11.6DNS 配置文件
resolv.conf的关键字主要有四个,分别是:
nameserver #定义DNS服务器的IP地址
domain #定义本地域名
search #定义域名的搜索列表
sortlist #对返回的域名进行排
11.7/etc/hosts 文件
hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下。hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来解决。通过可以将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问。
hosts文件格式
ip地址 主机名/域名 (主机别名)
主机名和域名的区别在于:
主机名通常在局域网内使用,通过hosts文件,主机名就被解析到对应的ip。
域名通常在internet上使用,但是优先级低于hosts文件中内容,因此如果你不想使用internet上的域名解析,可以更改自己的hosts文件,加入自己的域名解析。
hosts文件作用:
一个主要的作用是:线下环境模拟,通信双方在同一个局域网内想通过internet上的域名相互访问,则只需要修改自己的/etc/hosts文件内容即可。
课堂笔记
TCP的三次握手和四次挥手
1)TCP的三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户终发送syn包到服务器,并进入SYN -SEND状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认客户端的SYN(ACK+1),同时自己也发送一个SYN包 即SYN+ACK包,此时服务器 进入SYN-RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK ,此包发送完毕,客户端和服务器端进入ESTABLISHED状态,完成三次握手。客户端与服务器开始传送数据。
2)四次挥手