iostat和iotop命令,free,ps,netstat,tcpdump命令

一、监控io性能,iostat和iotop命令
1. iostat -x
iostat和iotop命令,free,ps,netstat,tcpdump命令
%util   表示你的IO等待,磁盘使用有多少时间占用CPU,等待IO比率如果比较高说明磁盘IO比较差,

2. iotop 
如果没有iotop命令,先使用yum install -y iotop安装
Total DISK READ :    0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:    0.00 B/s | Actual DISK WRITE:       0.00 B/s
TID  PRIO     USER     DISK READ  DISK WRITE  SWAPIN     IO>        COMMAND                           
1452 be/4    root          0.00 B/s       0.00 B/s       0.00 %     0.05 %    [kworker/0:2]
动态查看磁盘的性能,关注IO>这一列,为进程占用IO的百分比。

二、free命令
1. free    查看内存使用状况,不加任何选项默认单位KBN,-m以M为单位显示,-h更加直观,会加上单位
              total             used             free          shared     buff/cache     available
Mem:  1883484      137260     1412468        8808        333756        1557704
Swap:  4194300           0            4194300
total       表示总共的内存
used      使用的内存
free       剩余的内存,系统会将一部分的内存预分配给buff/cache
buffer   缓冲    CPU处理完的数据,先是存储到内存,内存再写到磁盘中   
cache    缓存      磁盘的数据先存到内存中,内存再交给CPU处理

total = used + free + buff/cache                
available包含free 和 buff/cache的剩余部分


三、ps命令
1.ps aux
   ps -elf    这两个命令是差不多的,静态的列出系统所有的进程   
[[email protected] ~]# ps aux |grep nginx                #过滤出nginx进程
root      3825  0.0  0.0 112676   984 pts/2    S+   19:05   0:00 grep --color=auto nginx

2.
[[email protected] ~]# ps aux
USER       PID    %CPU    %MEM        VSZ           RSS     TTY      STAT    START   TIME          COMMAND
root         1         0.0            0.3       193700          6828   ?          Ss        04:49      0:07        /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2         0.0            0.0           0                    0      ?            S        04:49      0:00         [kthreadd]
root         3         0.0            0.0           0                    0       ?          S         04:49      0:00        [ksoftirqd/0]
USER               进程的运行用户
PID                  进程的ID,proc下有很多数字的目录,这些数字就是进程的PID
%CPU             进程占用CPU的百分比
%MEM           内存的百分比
VSZ                虚拟内存
RSS                 物理内存
tty                   是在哪一个终端上运行的
START            什么时候启动
TIME              启动了多长时间
COMMAND   进程的名字

STAT    进程的状态:
D         不能中断的进程
R          run状态的进程,是说某一个时间段内在使用CPU
S         Sleep状态的进程,
T          暂停的进程
+            前台的进程
Z           僵尸进程
<         高优先级的进程
N         低优先级的进程
L          内存中被锁了内存分页的进程
s          主进程
I           多线程进程,

四、netstat命令
1. netstat -lnp  查看端口状态
[[email protected] ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address       State       PID/Program name   
tcp        0                 0   0.0.0.0:29237                 0.0.0.0:*                   LISTEN      1344/sshd           
tcp        0                 0   127.0.0.1:25                   0.0.0.0:*                   LISTEN      1432/master         
tcp        0                 0    :::29237                          :::*                            LISTEN      1344/sshd           
tcp        0                 0    ::1:25                              :::*                            LISTEN      1432/master         
udp       0                 0   0.0.0.0:68                       0.0.0.0:*                                    1191/dhclient       
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     10199  1/init              @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     12325  1432/master         public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     12330  1432/master         private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     12333  1432/master         private/rewrite


2. 查看各种连接状态的个数,需要关注ESTABLISHED这一项,如果数值比较大那说明系统比较忙,并发连接数
[[email protected] ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
ESTABLISHED      1
LISTEN      4
netstat  查看tcp/ip的通讯状态,
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

3. ss -an   与netstat的功能类似
[[email protected] ~]# ss -an
State      Recv-Q Send-Q                                                Local Address:Port                                                  Peer Address:Port
LISTEN     0      128                                                              :::29237                                                           :::*     
LISTEN     0      128                                                               *:29237                                                            *:*     
LISTEN     0      100                                                             ::1:25                                                              :::*     
LISTEN     0      100                                                       127.0.0.1:25                                                               *:*     
ESTAB      0      336                                                 104.225.232.200:29237

五、tcpdump命令
1. tcpdump -nn   n表示ip用数字显示,不加会显示主机名,
[[email protected] ~]# tcpdump -nn -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:54:38.936580 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 3361883341:3361883553, ack 91951291, win 296, length 212
21:54:38.953246 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 212:408, ack 1, win 296, length 196
21:54:38.955643 IP 192.168.177.1.50813 > 192.168.177.7.22: Flags [.], ack 408, win 256, length 0
21:54:38.963467 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 408:668, ack 1, win 296, length 260
21:54:38.964449 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 668:832, ack 1, win 296, length 164
21:54:38.965842 IP 192.168.177.1.50813 > 192.168.177.7.22: Flags [.], ack 832, win 254, length 0
21:54:38.966482 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 832:1092, ack 1, win 296, length 260
21:54:38.980042 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 1092:1256, ack 1, win 296, length 16
2. tcpdump  -i  port   -i指定网卡  port指定端口
[[email protected] ~]# tcpdump -nn -i ens33 port 22                #指定抓包的网卡ens33,端口22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:59:00.316147 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 3362083261:3362083473, ack 91954343, win 296, length 212
21:59:00.317023 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 212:408, ack 1, win 296, length 196
21:59:00.317540 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 408:572, ack 1, win 296, length 164
21:59:00.318108 IP 192.168.177.1.50813 > 192.168.177.7.22: Flags [.], ack 408, win 253, length 0
21:59:00.318793 IP 192.168.177.7.22 > 192.168.177.1.50813: Flags [P.], seq 572:832, ack 1, win 296, length 260
3. tcpdump  -c  -w     -c指定抓包的个数,-w将抓到的包写入文件
[[email protected] ~]# tcpdump -nn -i ens33 port 22 -c 5 -w pack.txt       #指定抓包的网卡ens33,端口22,抓取5个包,写入文件pack.txt
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
5 packets captured
5 packets received by filter
0 packets dropped by kernel

4. tcpdump -r    读取抓到的包的内容
[[email protected] ~]# tcpdump -r pack.txt
reading from file pack.txt, link-type EN10MB (Ethernet)
22:00:57.811249 IP localhost.localdomain.ssh > 192.168.177.1.50813: Flags [P.], seq 3362098157:3362098305, ack 91956611, win 296, length 148
22:00:57.859069 IP 192.168.177.1.50813 > localhost.localdomain.ssh: Flags [.], ack 148, win 254, length 0
22:01:22.617629 IP 192.168.177.1.50813 > localhost.localdomain.ssh: Flags [P.], seq 1:69, ack 148, win 254, length 68
22:01:22.627152 IP localhost.localdomain.ssh > 192.168.177.1.50813: Flags [P.], seq 148:216, ack 69, win 296, length 68
22:01:22.682824 IP 192.168.177.1.50813 > localhost.localdomain.ssh: Flags [.], ack 216, win 253, length 0

5.tshark
yum install -y wireshark    #安装软件

以下的用法可以显示访问http请求的域名以及uri
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访问的情况

以下可以抓取mysql的查询
tshark -n -i eth1 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"

tshark -i eth1 port 3307  -d tcp.port==3307,mysql -z "proto,colinfo,mysql.query,mysql.query"