1、监控io性能
在安装sysstat时会安装iostat命令,其余sar属于同一个包
iostat 查看磁盘使用
iostat 1每秒显示一次磁盘使用状况
iostat -x,需要关注%util,表示磁盘占用cpu的时间百分比,如果这个数值较大,表明磁盘的io很差,如果读写速度不大,而这个值较大,则表明磁盘可能出现故障
iotop:需要执行yum install -y iotop进行安装
iotop命令也是动态显示,根据进程使用io的百分比进行排序
2、free命令
free查看内存使用情况,centos7的显示结果与centos6的显示结果是不同的,相对于centos6,centos7的显示结果更加直观,第一列内存总大小,单位是kb,第二列是使用的大小,第三列是剩余的大小,第四列是共享的大小,第五列是buff/cache大小,第六列是可用的大小,buff+used+free=total,
buff为缓冲,cache为缓存,数据从磁盘到cpu,经过内存时占用的空间为cache,cpu将数据放入磁盘时,经过内存占用的空间为buff
此命令输出需要关注available的值
free -m指定显示单位为兆
free -h在数值后面显示单位
3、ps命令
查看进程的命令
pu aux查看系统所有的进程,第一列为进程用户,第二列为进程PID,VSZ虚拟内存,RSS物理内存,stat进程状态,有以下几种类型
D:不能中断的进程
R:run状态的进程
S:sleep状态的进程
T:暂停状态的进程
Z:僵尸进程
+:前台进程
<:高优先级的进程,CPU先处理高优先级的进程
N:低优先级进程
L:内存在被锁了内存分页,不常见
s:主进程,如nginx会有一个主进程和多个子进程,主进程是由root用户启用,而子进程是由普通用户启用
l(小写的L):多线程进程,一个进程有多个线程,这些线程共享一块内存空间
ps aux |grep nginx 查看系统下nginx的进程状态
ps -elf输入结果与pa aux的结果相似
使用kill PID停止相应的进程:
ls -l /proc/505可以查看PID为505的进程的启动目录
4、查看网络状态
netstat 查看网络状态
netstat -lnp查看监听端口,可以查看服务器都监听了哪些端口,socket文件用于同一台服务器中两个进程间通信
netstat -lnp的输出结果中也可以查看有哪些socket文件
netstat -ltnp查看tcp监听端口状态
netstat -ltunp查看tcp和udp端口状态
netstat -na可以查看tcp状态
netstat -an | awk '/^tcp / {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'查看各种tcp状态的数量,需要关注established状态的数值,如果该值过大,则表示系统处于繁忙状态,几千以内都是可以接受
ss -na与netstat命令相似
ss -na |grep -i listen查看处于listen状态的端口,但是此命令不会显示进程名称,而netstat会显示进程名称和PID
5、linux下抓包
tcpdump用于linux系统抓包,执行yum install -y tcpdump进行安装
tcpdump -nn -i ens33:使用-i选项指定网卡并进行抓包,-nn中第一个n表示主机用IP的形式显示,如果不加则会显示主机名,第二个n表示
tcptump -nn port 22指定端口为22的包
tcptump -nn not port 22指定端口为非22的包
tcptump -nn not port 22 and host 113.107.238.130指定113.107.238.130接受或发生的端口为非22的包
tcptump -nn -i ens33 -c 100只抓100个包
tcptump -nn -i ens33 -c 10 -w /tmp/1.cap只抓10个包,并且保存到文件中
通过file命令可以查看到1.cap文件是由抓包产生,此文件不能直接使用cat查看
使用tcpdump -r /tmp/1.cap可以查看保存的抓包文件
yum install -y wireshark安装,可以使用tshark命令进行抓包
tsharl -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"可以查看有哪些IP访问网站的哪些链接