任务列表:
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
三次握手小例子 https://docs.qq.com/doc/DR3dISkdERGtac2VD
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
另外用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
3. 显示网络统计数据
ip -s link
ip -s -s link ls eth0
3. 停止开启网卡
ip link set eth0 down
ip linke set eth0 up
更改网卡名字
ip link set ens37 name eth1
永久保存:https://blog.csdn.net/jyusun/article/details/71513086
w/uptime 查看系统负载
第一行显示系统时间、 up系统当前运行时间、目前登录用户(可以从下面看到,tty1终端登陆,pts/0远程登陆)
系统负载 load average: 0.08, 0.14, 0.11
这三个数字分别表示1分钟、5分钟、15分钟之内,系统的负载值分别是多少,单位时间段内,使用cpu的活动的进程有多少个
1分钟内使用cpu的活动的进程有多少个
负载值低时,代表系统目前负载较小,要看有几颗逻辑CPU,不是物理CPU。
FROM:表示从哪里来
L0GIN@:表示登陆时间
IDLE:空闲了多长时间
JCPU、PCPU:使用了CPU的时间
WHAT:命令
w
uptime 和w命令的第一行相同,用w即可
cat /proc/cpuinfo 查看CPU信息
查看processor的值,即代表本机的cpu核数,如果是0,代表有1颗,如果是1,代表有2颗,以此类推
查看physical id 数,代表本机物理cpu,如果是1,代表有2个物理cpu
如果cpu核数是8,即processor为7时,那么负载值不应大于8,都可以正常运行,5分钟平均负载和15分钟平均负载同理,如果负载大于8,那么表示cpu核数不够用了
lscpu 也可以查看cpu信息
vmstat命令
vmstat监控系统状态
vmstat 1 每一秒显示一次系统状态(动态显示),不需要时使用Ctrl+c停止
vmstat 1 5 每一秒显示一次系统状态,只显示5次,5次后自动终止
需要关注的点:
1、r=run 表示有多少进程处于运行状态
当进程有多个时,而CPU只有一个,那么就需要轮流使用,在一个时刻只允许一个进程在使用cpu运行
2、b=block 有多少个进程在等待
3、swpd 当内存不够时,系统可以拿出内存中的一部分数据临时放到swap交换分区里去。如果swpd值一直变换时,说明交换分区和内存在频繁的交换数据,代表内存不够了
4、si/so 与swpd存在关联
si(i代表in,单位是kb)有多少k的块数据,从swap进入到内存中 so(o代表out)有多少k的块数据,从内存中进入到swap 如果swpd在频繁变换时,这两个值肯定也会变动。
5、bi/bo 与磁盘存在关联
bi有多少k的数据从磁盘进入到内存中 ,读的数据量是多少,从磁盘里读
bo有多少k的数据从内存写入到磁盘,写的数据量是多少,从磁盘里写,写入到磁盘里去
这两个数值很大时,说明磁盘在频繁的读写。跟CPU和内存比,磁盘是很慢的,如果很频繁的读写数据会导致b列的增加。因为有很多进程 在等待磁盘。
6、us用户级别,数字不会超过100,百分比
表示用户的资源占用CPU的百分比,如果数字长时间大于50,说明系统肯定资源不够
7、sy系统本身的一些进程、服务,占用资源的百分比
8、id 空闲
us+sy+id=100%
9、wa=wait有多少进程在等待CPU的百分比
top命令
top查看进程使用资源情况
top 3秒显示一次,动态的
第一行:和w命令第一行相同
第二行:有多少个任务,有多少个正在运行的进程,有多少个休眠的进程,有多少个停止的进程,有多少个僵尸进程zombie (主进程被意外终止的)
第三行:CPU百分比,平时需要多关注us,如果us很高,系统负载将会特别大。st表示被偷走的cpu,如果服务器做了虚拟化,下面有一些虚拟机,就会偷走一些cpu。
第四行:KiB Mem表示物理内存,需要关注。free剩余空间
第五行:KiB Swap表示交换分区
下面默认按照%CPU排序,占用高的在上。
RES:物理内存大小,单位是字节。
PID:进程号,可以使用它杀死进程,kill+pid号杀死进程
想要按照内存占用%MEM大小排序,按大写的m(M)键 ,恢复按照%CPU排序,按大写p(P)键
查看所有CPU使用率,按1,可以来回切换
退出,按q
top -c 可以看到具体的进程命令,全局的路径,看的更详细
top -bn1 静态的显示,一次性把所有的信息全部输出出来,适合在写脚本时实用
sar命令
sar Linux系统里的瑞士军刀
没有的话需要先安装: yum install -y sysstat
安装完成后报错:无法打开 /var/log/sa/sa14: 没有那个文件或目录
原因是 因为sar 命令不加具体的选项和参数,会默认调用系统里保留的一个历史文件/var/log/sa ,sar生成的历史文件存放目录,每10分钟抓取一遍系统状态,此时还没有生成,10分钟后会生成
sar -n DEV 1 10 查看网卡流量 1是每一秒钟显示一次,10是显示10次
用法和vmstat类似,后面跟1 10表示每隔1秒显示一次,显示10次
第一列:时间
第二列:IFACE网卡名字
第三列:rxpck/s接受到的数据包,单位个数,几千正常,上万就不正常
第四列:txpck/s发送出去的数据包
第五列:rxkB/s接收的数据量,单位KB
第六列:txkB/s发送的数据量
第七列:rxcmp/s不需要关注
第八列:txcmp/s不需要关注
第九列:rxmcst/s不需要关注
查看前一天的历史数据据 sar -n DEV -f /var/log/sa/sa14 sa14 是14号生成的,所以以14结尾
/var/log/sa里保留的文件最多为1个月,所以文件为sa01 -sa31
sar -q 查看系统负载
sar -q -f /var/log/sa/sa14 可以查看14号的负载
sar -b 查看磁盘读写
nload命令
没安装的话使用前需要先安装
yum install -y epel-release 如果epel-release安装了才可以继续安装nload
yum install -y nload 安装nload
直接运行nload 动态的显示网卡实时速度的一个页面
第一行显示网卡名字、IP、网卡其中之一(1/2),可以按右方向键切换网卡,按q退出
Incoming进来带宽
Outgoing出去带宽
curr当前值
Avg平均值
Min最小值
Max最大值
Ttl总和
监控io性能
1、 iostat
在安装sysstat包时,默认会安装iostat包,和sar在同一个包里
和vmstat类似,没一秒执行一次,执行两次
iostat -d 只查看Device 相关的信息,Device 需要着重看,看读写速度
iostat -x
重要指标:%util
表示磁盘的使用百分比,如果这个数字很大,比如长期超过90%,说明磁盘非常忙,读写肯定也会很大。如果读写不大,但该列值很大, 就说明硬盘有问题。
iotop 当磁盘io很忙,可以使用iotop查看,获得读写的进程是哪个,按IO使用率大小排序
yum install -y iotop 没安装的话先安装
和top很像,动态显示
SAWPIN 交换分区,交换到内存里去
free命令
用来查看内存和swap使用情况
centos6和centos7显示的内容是不一样的,7更加直观,第一行是说明,第二行是内存使用情况,第三行是swap使用情况,我们主要关注第二行,内存使用情况。
第一列:total内存总大小,单位KB
第二列:used内存已用大小,着重关注此列
第三列:free内存剩余大小
第四列:shared共享大小
第五列:buff(缓冲)/cache 缓存)
关于buffer和cache我们可以这样简单区分:
0000(磁盘)-->内存(cache)--> CPU 即,从磁盘读出来后先放到内存里,然后CPU再到内存里去取这部分数据,这里的内存叫做cache
cpu(00000)--> 内存(buff)--> 磁盘 即,cpu产生的数据首先写入到内存中,然后再慢慢写到磁盘里,这部分内存叫做buffer
正常情况下内存总大小=已有+剩余,这里是并不对等的,因为在Linux系统里,会有一部分空间给buff/cache
第六列:available 包含free和buffer/cache剩余部分,关注available,这个数字是真正剩余的物理内存大小
公式:total=used+free+buff/cache
指定单位为M时,使用free -m
指定单位为G时,使用free -g或者free -h 在后面显示单位
free -b 单位为b
ps命令
ps命令查看系统进程
ps aux 静态的,一次性把系统当前所有进程列出来
USER用户
PID进程ID,杀死进程时可以用到kill PID,有时候这样并不能终止进程,需要加-9选项,即kill -9 PID,但这样有点暴力,严重时会丟失数据,尽量不要使用。
STAT进程状态,分为以下几种
D 不能中断的进程
R 正在运行,或在队列中的进程
S 处于休眠状态的进程
T 停止或被追踪的进程
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
< 高优先级进程
N 低优先级进程
L 内存中被锁了内存分页
s 主进程,包含子进程
l 多线程进程
+ 前台进程
查看进程所在目录 Is -I /proc/进程的PID/
ps aux |grep 进程名 检测进程有没有运行的方法
ps -elf 类似于ps aux,把系统所有进程全列出来
ps -eLf(查看线程)
查看网络状态 netstat
netstat -lnp 查看监听端口 需要关注上面的端口部分
netstat -an 查看tcp/ip 所有的连接状态
netstat -ltnp 只查看tcp的监听端口
netstat -ltunp 查看tcp和udp的监听端口
小技巧:查看所有状态数字
netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
ESTABLISHED如果很大,说明系统很忙,我们可以理解为并发连接数,并发就是 同一时间有多少个客户端在连接
ss -an和netstat异曲同工,显示tcpip状态
ss -an |grep -i listen
查看listen的状态,不会显示进程名称
netstat -lntp netstat 显示
Linux下抓包
1、tcpdump工具 .
安装 yum install -y tcpdump
tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上。不带任可选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包。
命令格式:
tcpdump [ -DenNqvX ] [ -c count ][ -F file ][ -i interface ] [ -r file ]
[ -s snaplen ] [ -w file ] [ expression ]
抓包选项:
-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了 100个包,只不过只有10个包是 满足条件的包。
-i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要 抓取loopback接口使用tcpdump -i lo),一旦找到第一个符合条件的接口,搜寻马上结束。可以使用'any'关键字表示所有网络接口。
-n:对ip地址以数字方式显式,否则显示为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-N:不打印出host的域名部分。例如tcpdump将会打印’nic'而不是'nic.ddn.mil'。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。
-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截 断,若出现包截断, 输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的 数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。
输出选项:
-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v:当分析和打印的时候,产生详细的输出。
-vv:产生比-v更详细的输出。
-vvv:产生比-vv更详细的输出。
其他功能性选项:
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。
-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载 入这些文件以进行分析和打印。
-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。
tcpdump -nn -i ens33
tcpdump -nn -i ens33 port 22 只要端口是22的包
tcpdump -nn -i ens33 not port 80 不要80端口的包
tcpdump -nn -i ens33 not port 80 and host 192.168.247.3 不要80端口并且host是192.168.247.3 的包
tcpdump -nn -i ens33 -c 100 只抓取100个包
tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap
要有数据产生才能抓包,可以再打开一个终端产生一些数据,例如执行top命令、vmstat命令,过一会就会抓取完。
要查看1.cap信息,不能直接使用cat 查看 使用 tcpdump -r /tmp/1.cap 查看
2、tshark
yum install -y wireshark
使用 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" 可以查看指定网卡80端口的web访问情况,主要针对80端口
tshark -i ens33 -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"
Linux网络相关
fconfig查看网卡ip(yum install net-tools)
ifconfig -a 当网卡down掉的时候,一般不会显示,加上-a会全部显示出来
ifup ens33/ifdown ens33 启用/关闭网卡
不要在Xshell里使用,在虚拟机里使用。一般在对网卡进行更改后使用,例如添加网关。也可以一起使用ifdown ens33 && ifup ens33,防止远程连接断掉
设置虚拟网卡
首先在网卡配置文件目录里复制一个ens33的配置文件
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33\:0 \ 脱义冒号
对新做的网卡编辑
ifdown ens33 && ifup ens33 在运行此命令重新连接下网卡
ifconfig 查看
可以在windows上Ping 192.168.247.155是否通
mii-tool ens33 查看网卡是否连接
ethtool ens33 也可以查看网卡是否连接
更改主机名 hostnamectl set-hostname 001
centos6不支持此命令,想要生效需要退出重新登录一下
hostname 可以查看主机名
查看主机名配置文件 cat /etc/hostname
DNS配置文件/etc/resolv.conf
这是由网卡配置文件定义的,也可以临时编辑resolv.conf文件设置dns2,但是重启后依然会被网卡里的配置文件覆盖
/etc/hosts文件
在Windows和Linux下都有此文件,后续讲Iamp时去访问自定义域名时,就会用到此文件。假设我们ping—个域名,会解析出他的公网IP, 但是如果我们在hosts文件里配置此域名,就会解析到我们配置的IP上
正常ping www.qq.com
编辑hosts文件
重新ping ,仅在本机生效
注意: 一个ip后面可以跟多个域名,但是同一个域名只能有一个ip生效
如果前面同一个域名指定了两个ip,会以后面的ip为主
手动增加swap
模拟一个G的磁盘空间:
dd if=/dev/zero of=/bigfile bs=1M count=1000
dd(对磁盘进行操作的工具),if(从哪里来),of(目标的文件或磁盘,此处写入到跟目录下,叫bigfile),bs(决定文件大小)=1M(即每个块为1M),count=1000(共有1000个块),也可以写成bs=100M,count=10
mkswap /bigfile 格式化成swap格式
chmod 600 /bigfile 更改权限
swapon /bigfile 挂载
之前的swap大小
挂载后的大小