10.1 使用w查看系统负载
1. 查看当前日期时间:date
[root@hao-01 ~]# date
2. 查看系统负载:uptime
[root@hao-01 ~]# uptime
3. 查看系统负载:w
[root@hao-01 ~]# w
(注意:w查看系统负载,一分钟使用cpu值超过逻辑CPU数值,就有进程等待运行了!)
当前时间(09:22:12) 启动时长(up 13 min) 用户登录数(1 user)
load average: 1分钟内有多少使用cpu的活动进程数量,
5分钟内有多少使用cpu的活动进程数量,
15分钟内有多少使用cpu的活动进程数量。
活动进程数量超过逻辑cpu的数值,则为有进程需要等待运行,cpu不够分配!
2. 查看有几颗逻辑cpu:
[root@hao-01 ~]# cat /proc/cpuinfo
0表示有1颗逻辑cpu,如果是7,则表示有8颗逻辑cpu(数值7为最大值)
(注意:w查看系统负载,一分钟使用cpu值超过逻辑CPU数值,就有进程等待运行了!)
10.2 vmstat命令
vmstat 命令的含义: 显示虚拟内存状态,监控系统状态
(报告关于进程、内存、硬盘读/写等系统整体运行状态)
(查看系统瓶颈:判断出是cpu不够?内存不够?还是磁盘io读/写太高?)
1.每一秒钟动态显示1次 :
[root@hao-01 ~]# vmstat 1
2.每一秒钟动态显示1次,只显示5次 :
[root@hao-01 ~]# vmstat 1 5
常用字段说明:
procs(进程)
r(run) : 运行的进程数量(表示多少个进程在运行)
b(block) : 等待的进程数量(表示多少个进程等待运行)
memory(内存)
swpd : 使用虚拟内存大小(0数值不变,则正常;如果频发变化,则内存不足)
swap
si : 有多少kb的数据,从swap进入到内存中
so : 有多少kb的数据,从内存里出来的
io(磁盘)
bi : 从磁盘里读的数据量有多少
bo : 从磁盘里写的数据量有多少
CPU(以百分比表示)(us%+sy%+id%=100%)
us : 用户服务进程占用cpu的百分比(如果值长时间大于50,则系统资源不够了)
sy : 系统服务进程占用cpu的百分比
id :空闲的百分比
wa:有多少个进程等待cpu的百分比
10.3 top命令
1.查看进程使用资源情况
[root@hao-01 ~]# top
kiB Mem :物理内存(单位kb)
total总内存大小,free剩余内存大小,used使用内存大小,
kiB Swap:交换分区(单位kb)
RES:占用的物理内存大小
%CPU :占用cpu百分比(排序按占用的多,排的前)
%MEM :占用内存百分比(排序按占用的多,排的前)
COMMAND :进程名称
按键说明:
大写M:%MEM按内存使用排序(使用多的进程排在前)
大写P:%CPU按cpu使用排序(使用多的进程排在前)
数字1:多个逻辑cpu切换查看
切换了 %Cpu0这个逻辑cpu。
q:退出
2.显示详细的进程信息:
(进程具体命令,在COMMAND下列出)
[root@hao-01 ~]# top -c
3.静态显示所有进程 :
(适合写脚本的时候用到)
[root@hao-01 ~]# top -bn1
4. 杀死查看指定进程:top 进程对应的PID值
[root@hao-01 ~]# top 3319
10.4 sar命令
1. 安装sar命令:
[root@hao-01 ~]# yum install -y sysstat
2. 查看网卡流量,设定每隔一秒钟显示一次,共显示10次:
[root@hao-01 ~]# sar -n DEV1 10
14时35分08秒(时间) IFACE(网卡名字)
rxpck/s(每秒接收到的数据包,单位:个)
txpck/s(每秒发出去的数据包,单位:个)
rxkB/s(每秒接收到的数据量,单位:kb)
txkB/s(每秒发出去的数据量,单位:kb)
重要:数据包接收到几千个算正常,如果上万个数据包,则有问题!!!
/var/log/sa/sa日期文件:是二进制文件,每隔10分钟生成更新一次
/var/log/sa/sar日期文件:是普通文本文件,可以用cat查看内容,这样文件会在第二天生成。
3.查看网卡流量情况历史文件:sar -n DEV -f /var/log/sa/sa日期
(/var/log/sa/下保存的sa**文件最高保留一个月,保存的名称格式是按sa当天日期
[root@hao-01 ~]# sar -n DEV -f /var/log/sa/sa10
4. 查看系统负载情况历史文件:sar -q-f /var/log/sa/sa日期
[root@hao-01 ~]# sar -q-f /var/log/sa/sa10
5. 查看磁盘读写情况历史文件: sar -b -f /var/log/sa/sa日期
[root@hao-01 ~]# sar -b -f /var/log/sa/sa10
/var/log/sa/sa日期文件:是二进制文件,每隔10分钟生成更新一次
/var/log/sa/sar日期文件:是普通文本文件,可以用cat查看内容,这样文件会在第二天生成。
10.5 nload命令
1. 安装nload需要先安装epel-release包:
[root@hao-01 ~]# yum install -y epel-release
2. 安装nload命令:
[root@hao-01 ~]# yum install -y nload
3.查看网卡流量(动态显示):
[root@hao-01 ~]# nload
Device 网卡名称
[] 远程地址
(1/2) 共两块网卡,当前查看的第一块网卡,用左右方向键查看其它网卡情况。
Curr 当前的值
Avg 平均值
Min 最小值
Max 最大值
退出:q
扩展:
tcp三次握手四次挥手
tshark几个用法:
10.6 监控io性能
安装iostat命令(也是安装这个包) :
[root@hao-01 ~]# yum install -y sysstat
1. (监控)查看 磁盘io使用情况:iostat -x
重要关注:%util 值 表示io磁盘使用多少占用cpu的!
[root@hao-01 ~]# iostat -x
[root@hao-01 ~]# iostat -x 1
2.安装iotop命令 :
[root@hao-01 ~]# yum install -y iotop
3. (监控)查看 进程使用磁盘io百分比(哪个进程使用磁盘比较大) :iotop
重要关注:IO> 下的值(数值越大,排名越前)
[root@hao-01 ~]# iotop
10.7 free命令
1. 查看内容使用情况(默认单位:kb):free
[root@hao-01 ~]# free
2. 查看内容使用情况(指定单位:mb):free -m
[root@hao-01 ~]# free -m
3. 查看内容使用情况(直观单位):free -h
[root@hao-01 ~]# free -h
Mem(内存使用):total used free sharedbuff/cache
total(内存总大小)
used(使用内存)
free(剩余内存)
shared(共享内存)
buff/cache(缓冲/缓存)
磁盘读出来的数据——经过内存(cache缓存)——到CPU处理
CPU处理完的数据——经过内存(buffer缓冲)——放到磁盘里
公式:total=used+free+buff/cache
avaliable包含free和buff/cache剩余部分
Swap(交换分区):如果Swap不足了,需要考虑增加内存了(或者是内存泄漏程序有bug需要排查了)!
10.8 ps命令
1. 查看系统当前所有进程:ps -elf
列出系统当前所有进程 :ps aux
[root@hao-01 ~]# ps aux
USER(运行用户名称)
PID(进程id号)
%CPU(使用cpu百分比)
%MEM(使用磁盘百分比)
STAT部分说明:
D不能中断的进程
R run状态的进程(某一个时间段内使用cpu的)
S sleep状态的进程(自动停止暂停,自动激活启动的)
T 暂停的进程(Ctrl c 的进程)
Z 僵尸进程(系统比较多僵尸进程,需要杀死)
< 高优先级进程
N低优先级进程
L 内存中被锁了内存分页(极少见)
s 主进程
l 多线程进程
+ 前台进程
2. 查看指定进程是否运行: ps aux |grep指定进程名称
[root@hao-01 ~]# ps aux |grepmysql
[root@hao-01 ~]# ps aux |grepnginx
3.杀死指定进程(不要随意杀死进程哦):
[root@hao-01 ~]# kill 进程Pid
ps aux |grepps aux
4. 查看进程是在哪个文件启动的 :ls -l /proc/进程Pdi/
[root@hao-01 ~]# ls -l /proc/3406/
10.9 查看网络状态
1. 查看网络状态: netstat
[root@hao-01 ~]# netstat
2.查看监听端口 :netstat -lnp
[root@hao-01 ~]# netstat -lnp
3.只查看tcp的监听端口(不包含socket):
[root@hao-01 ~]# netstat -lntp
4. 查看tcp和udp的监听端口(不包含socket):
[root@hao-01 ~]# netstat -lntup
5.查看系统的网络连接状态(无法显示进程名字):ss -an
查看系统的网络连接状态:netstat -an
[root@hao-01 ~]# netstat -an
tcp三次握手四次挥手(重要,需了解,面试可能会问到)
6. 查看所有状态的数字:
[root@hao-01 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
ESTABLISHED:客户端和服务端在通信数量(1000以内都是正常的)
10.10 Linux下抓包
1.安装tcpdump抓包命令:
[root@hao-01 ~]# yum install -ytcpdump
2. 抓包: tcpdump -nn -i网卡名称
[root@hao-01 ~]# tcpdump -nn -iens33
原本地ip地址原端口号 >到 数据包ip数据包ip端口
3. 抓包 指定端口:tcpdump -nn -i网卡名称port端口号
[root@hao-01 ~]# tcpdump -nn -iens33port22
4. 抓包 排除指定端口:tcpdump -nn -i网卡名称ontport端口号
[root@hao-01 ~]# tcpdump -nn -iens33not port22
5.抓包 排除指定端口,并指定ip的数据包:
tcpdump -nn -i网卡名称ontport端口号and host 指定ip
[root@hao-01 ~]# tcpdump -nn -iens33not port22and host 192.168.47.1
6.指定抓包数量,并保存到指定文件内:
tcpdump -nn -i网卡名称 -c抓包数量-w存放文件地址
[root@hao-01 ~]# tcpdump -nn -iens33 -c10-w/tmp/1.cap
7.安装tshark抓包命令:
[root@hao-01 ~]# yum install -y wireshark
8.tshark 查看指定网卡,80端口的访问情况:
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"
tshark几个用法: