一、 使用w查看系统负载
二、 vmstat命令
三、 top命令
四、 sar命令
五、 nload命令
六、 监控io性能
七、 free命令
八、 ps命令
九、 netstat查看网络状态
十、 linux下抓包
十一、Linux网络相关
十二、扩展
tcp三次握手四次挥手(重点) http://www.doc88.com/p-9913773324388.html
tshark几个用法:http://www.aminglinux.com/bbs/thread99511.html
一、 使用w查看系统负载
1.1 w查看当前系统的负载
该命令显示的信息第一行从左面开始显示的信息依次为:时间,系统运行时间(即登录时间),登录用户数,平均负载。第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等。最应该关注的应该是第一行中的 ‘load average:’ 后面的三个数值。
load average代表:
1,5,15分钟内系统的负载值是多少(和cpu有关)。
第一个数值表示1分钟内系统的平均负载值(1分钟内最能体现系统的负载情况);第二个数值表示5分钟内系统的平均负载值;第三个数值表示15分钟系统的平均负载值。这个负载值的意义是,单位时间内使用cpu的活动进程有多少个(平均值,可以是小数)。当然这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量(逻辑核数)就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力(最优负载值),否则就要关注一下了。
1.2 w/uptime 查看系统负载
uptime查看到内容与w的第一段内容相同
1.3 cat /proc/cpuinfo 查看cpu核数(逻辑cpu)
‘/proc/cpuinfo’ 这个文件记录了cpu的详细信息。目前市面上的服务器通常都是2颗4核cpu,在linux看来,它就是8个cpu。(processor值为0代表一颗cpu。),所以查看当前系统有几个cpu,我们可以使用这个命令: cat /proc/cpuinfo|grep 'processor'
。而如何看几颗物理cpu呢,需要查看关键字 “physical id”, 由于虚拟机只有一个cpu所以并未显示关于 “physical id” 的信息。
1.4 用w查看系统情况,看到有可疑的tty或者pts端连接上,怎么把它直接踢掉
[root@Linux01 ~]# pkill kill -t pst/0
查看那个终端做了哪些操作:
只能通过看命令历史,但如果那个终端没有正常退出,比如直接强制踢掉就没办法查看。
但可以做一个简易的审计系统:
http://www.68idc.cn/help/server/linux/2014042190951.html
二、 vmstat命令
2.1 当系统负载偏高时,使用vmstat命令查看
w 查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU, 内存,磁盘等)有压力就无法判断了。通过 vmstat 就可以知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu. 请重点关注一下r b wa si so bi bo us几列。
1)procs 显示进程相关信息
2)memory 内存相关信息
3)swap 内存交换情况
4)io 磁盘使用情况
5)system 显示采集间隔内发生的中断次数
6)CPU 显示cpu的使用状态(us+sy+id+wa=100%,约等于,近似值)
注:经常会关注r列,b列,和wa列,三列代表的含义在上边说得已经很清楚。IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。
2.2用法
[root@localhost ~]# vmstat 1 5
或者:
[root@localhost ~]# vmstat 1
前面表示,每隔一秒钟打印一次状态,共打印5次,而后面的表示每隔1秒打印一次状态,一直打印,除非我们按 Ctrl + c 结束。
三、 top命令
3.1 top命令:显示进程所占系统资源(查看具体哪个进程导致系统问题)
这个命令用于动态监控进程所占系统资源,每隔3秒变一次。这个命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况。用top重点查看的还是下面的进程使用系统资源详细状况。这部分东西反映的东西还是比较多的,不过需要关注的也就是几项:%CPU, %MEM, COMMAND us的值(代表用户cpu使用率)。这些项目所代表的意义,RES 这一项为进程所占内存大小,单位是k字节;而 %MEM 为使用内存百分比。在 top
状态下,按 M, 可以按照内存使用大小排序;按P,以使用cpu情况排序;按数字 ‘1’ 可以列出各颗cpu的使用状态。
第二行最后一个进程状态zombie:僵尸进程,表示主进程被关闭或意外终止,子进程只好自生自灭,即没有主进程的子进程。
3.2 top -c 可以查看具体进程路径
3.3 命令 top -bn1
它表示非动态打印系统资源使用情况,可以用在shell脚本中(和 top
命令唯一的区别就是,它一次性全部把所有信息输出出来而非动态显示。)
3.4 扩展
3.4.1 ps aux 查看进程
看 stat那列,是Z的就是僵尸进程;
3.4.2 kill pid 杀死进程
kill -9 pid 强制杀死进程,一定可以杀死。 误杀了 就恢复不了了。
四、 sar命令
sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。
4.1 安装 yum install -y sysstat
初次使用sar命令会报错(不加选项的情况下),那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)现在sar升级后安装会直接生成两个文件,例sa22、sar22。它的数据库文件在 “/var/log/sa/” (特性:sar每10分钟会把系统的状态过滤一遍,保存在这个目录下文件中)目录下,默认保存一个月。
sa22和sar22的区别:sa22内容是抓取的系统状态,是一个二进制文件,不能直接cat,需要sar -f filename。
1)查看网卡流量 sar -n DEV
rxpck数值几千的值大概是正常的,上万的话可能被攻击了
2)查看历史负载 sar -q
3)查看磁盘负载 sar -b
4)另外也可以查看某一天的网卡流量历史(磁盘负载历史),使用-f选项,后面跟文件名
五、 nload命令
5.1 nload 可以动态显示网卡平均速度
安装noload前要安装epel-release。
5.2 用法
#nload
有多个网卡时,按方向键可以查看其它网卡的网速,q退出。
六、 监控io性能
6.1 io命令也是在sysstat包里
6.2 iostat/iostat 1;iostat一次性显示磁盘读写速度;iostat 1动态显示
6.2 iostat -x查看磁盘使用
重要指标%util,代表一秒内IO操作所占的比例,如果读写bu数值不大,但是%util大的话说明硬盘可能有故障。
6.3 iotop命令查看是哪个进程产生io,导致磁盘忙
安装命令:yum install -t iotop
iotop动态实时显示io百分比,百分比大的在上面
七、 free命令
7.1 查看内存使用状况
7.2 total=used+free+cache/buff
真正剩余物理内存:avaiable=free+cache/buff
7.3 free默认单位是kb,可以加-m 或者-g选项分别以M或G为单位打印内存使用状况
八、 ps命令
8.1 ps命令用来查看系统进程,ps -aux 和ps -elf用法类似,查看所有运行的进程(静态列出当前进程状态)
8.2 可以# ps -elf|grep ‘进程名’ →过滤某个指定的进程,并显示状态
8.3 -C选项,查看指定的进程是否存在
8.4 参数意义
PID :进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用 ‘kill’进程的pid
有时并不能杀掉,则需要加一个-9选项了, #kill -9 进程pid
STAT :表示进程的状态,进程状态分为以下几种
D 不能中断的进程(通常为IO)
R 正在运行中的进程
S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态(sleep状态的进程)
T 已经停止或者暂停的进程,如果我们正在运行一个命令,按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态
X 已经死掉的进程(这个好像从来不会出现)
Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。
< 高优先级进程
N 低优先级进程
L 在内存中被锁了内存分页
s 主进程
l 多线程进程
+
代表在前台运行的进程
注:主进程和线性进程的区别:
①主进程包含了线性进程,线性进程是主进程的子进程;
②同一个主进程下的线性进程共享相同的内存块,而进程间内存块相互隔离
九、查看网络状态
9.1 netstat命令查看网络状态
9.2 netstat -lnp 查看监听端口(没监听端口,就不能与外部通信)
9.3 netstat -an查系统的网络连接状态
9.4 netstat -lntp 只查看tcp的状态,不包含socket文件。socket文件:用于同一台服务器上两个进程间通信(lnup查看tcp和udp)
9.5 ss -an和 netstat -an用法相似但是比netstat更快(ss -an不显示进程名)
9.6 小技巧:查看所有状态的个数
# netstat -an|awk '/^tcp/{++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
十、 linux下抓包
10.1 tcpdump抓包工具
安装:yum install -y tcpdump
10.2 tcpdump -nn 命令:第一个n表示用数字显示ip地址(不加会显示主机名);用来看数据的流向
10.2.1 tcpdump -nn -i ens33(网卡名) 指定网卡
10.2.2 tcpdump -nn port * 指定端口
tcpdump -nn notport 22 and host 192.168.0.100:表示不抓取端口22的包,并只要host为192.168.0.100的
10.2.3 抓取指定数量的数据包并且存到指定文件目录下;不能直接去解析。。
tcpdump -nn -i -ens33 -c 10 -w dong.cap
这个文件不能直接cat,用tcpdump -r来读取抓来的包:tcpdump -r dong.cap
10.3 扩展
yum install -y wireshark
tshark命令可查看指定网卡80端口web的访问情况;类似于web的访问日志
十一、Linux网络相关
11.1 ifconfig 查看网卡IP
安装:yum install -y net-tools
ifconfig -a 可以看到网卡down或者没ip时的信息
11.2 ifup可以启动网卡,ifdown可以关闭网卡远程操作不可恢复。
可以使用#ifdown ens33&&ifup ens33关闭后重启
11.3 设定虚拟网卡(给一个网卡设定多个IP)
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-ens33 ifcfg-ens33\:1
# vi !$
修改NAME/DEVICE/IPADDR三项,保存。重启网卡就会发现多了一个虚拟网卡
11.4 查看网卡是否连接mii-tool命令;无法使用的话就用ethtool命令
使用ethool时看最后一行
11.5 修改主机名hostnamectl set-hostname ***
hostname查看主机名,改完以后当前终端主机名不会立刻变成修改后的主机名,需要重启或者进入子shell里(输入bash)
11.6 DNS配置文件/etc/resolv.conf
修改DNS信息:①在网卡配置信息里修改,/etc/sysconfig/network-scripts/ifcfg-ens33
②vim /etc/resolv.conf
11.7 /etc/hosts文件
修改host可以让同样的网站访问不同地址,只在本机生效
注:/etc/hosts 的格式很简单,每一行作为一条记录,分成两部分,第一部分是IP,第二部分是域名。关于hosts文件,有几点需要注意:
1)一个IP后面可以跟多个域名,可以是几十个甚至上百个;
2)每行只能有一个IP,也就是说一个域名不能对应多个IP;
3)如果有多行中出现相同的域名(前面IP不一样),会按最前面出现的记录来解析。
一个IP可以对应多个域名;一个域名也可以对应多个IP;但是,hosts文件中,ping域名时,哪条记录在前面哪条生效(从上到下执行,一旦匹配到一个域名或IP时,后面的就不生效了。如果是127.0.0.1,那么127.0.0.1生效,即使127.0.0.1在下面也是127.0.0.1生效。)
十二、扩展
12.1 tcp三次握手四次挥手(重点) http://www.doc88.com/p-9913773324388.html
12.2 三次握手 和四次挥手 参考文档:Python/socket编程/2.TCP-IP各层详解
12.3 tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
12.4 ip命令使用
12.4.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
12.4.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
12.4.3. 显示网络统计数据
ip -s link
ip -s -s link ls eth0
12.4.5 停止开启网卡
ip link set eth0 down
ip linke set eth0 up
12.4.6更改网卡名字
ip link set ens37 name eth1