七周二次课(3月20日)
10.6 监控io性能
10.7 free命令
10.8 ps命令
10.9 查看网络状态
10.10 linux下抓包


扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html 
tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html 



10.6 监控io性能


磁盘状态的两个命令

iostat -x 磁盘使用
iotop   磁盘使用

 

我们在运维工作中,除了查看内存 cpu工作情况外,磁盘io也是非常重要的指标。

有时候,内存和CPU明明还有剩余,但是系统负载很高,用vmstat查看状态,会发现b和wa比较大,这说明系统的磁盘有瓶颈。所以,要更加详细去查看磁盘的状态。


监控系统状态

iostat命令 在安装sysstat的时候已经安装好了


用法可以是#iostat 也可以#iostat 1

用法和vmstat挺相似的


[root@centos7 sed]# iostat 
Linux 3.10.0-693.el7.x86_64 (centos7.4-01) 2018年03月20日 _x86_64_(1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.06    0.00    0.16    0.08    0.00   99.69
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.68         8.63         1.40     107340      17392
sdb               0.02         0.29         0.00       3612          0
dm-0              0.00         0.08         0.00       1036          0

这里可以看到sda sdb两块硬盘 和 读、写速度 这个命令看的东西不太丰富,

因为这些#sar -b都可以看到的。


[root@centos7 sed]#  sar -b
Linux 3.10.0-693.el7.x86_64 (centos7.4-01) 2018年03月20日 _x86_64_(1 CPU)
11时25分06秒       LINUX RESTART
11时30分02秒       tps      rtps      wtps   bread/s   bwrtn/s
11时40分01秒      0.07      0.00      0.07      0.00      1.27
11时50分01秒      0.30      0.14      0.16      3.84      3.76
12时00分01秒      0.07      0.01      0.06      0.78      0.68
12时10分01秒      0.11      0.02      0.09      0.31      1.14
12时20分01秒      0.88      0.41      0.47     11.15     11.03
12时30分01秒      0.04      0.00      0.04      0.00      0.55
12时40分01秒      0.05      0.00      0.05      0.00      0.53




[root@centos7 sed]# iostat -x
Linux 3.10.0-693.el7.x86_64 (centos7.4-01) 2018年03月20日 _x86_64_(1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.06    0.00    0.15    0.07    0.00   99.72
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.01    0.36    0.23     7.32     1.23    29.14     0.01   15.13    5.89   29.42   2.64   0.15
sdb               0.00     0.00    0.02    0.00     0.25     0.00    29.25     0.00    1.53    1.53    0.00   0.93   0.00
dm-0              0.00     0.00    0.00    0.00     0.07     0.00    48.19     0.00    3.53    3.53    0.00   1.47   0.00

关注点

  1. %util 这一列表示io等待 

  2. 磁盘使用,有多少时间占用cpu的,CPU有一部分是给进程处理的,计算的。也有一部分是要等待io的,等待磁盘读和写。

  3. 这个等待的时间比是多少 就是%util 

  4. 如果这个等待时间比大,读和写跟着大。证明磁盘读写处于繁忙状态,如果读和写不大,只是%util大就说明硬盘可能存在问题,有故障。如果硬盘很慢的话,肯定会影响性能,即使是CPU再厉害,运算再快,硬盘跟不上,也是会存在很大的瓶颈。



比如发现磁盘io很忙,很频繁,可以使用#iotop (第一次运行需要安装)

它和top很相似,也是动态显示,排序。


[root@centos7 sed]# iotop 


10.7 free命令


free 命令可以查看当前系统的总内存大小以及使用情况。

CentOS 7系统的free命令显示结果比CentOS 6更加简洁了一些,但大体上的内容是一致的。


[root@centos7 ~]# free 
              total        used        free      shared  buff/cache   available
Mem:        1008152      126864      605284        6880      276004      702136
Swap:       2097148           0     2097148


三行,第一行是说明,第二行内存使用情况,第三行swap交换分区使用情况。需要关注的是第二行内存。


添加-m 使其输出单位是M,

[root@centos7 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            984         123         591           6         269         685
Swap:          2047           0        2047

-h显示当前适当的单位 *常用

[root@centos7 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           984M        123M        591M        6.7M        269M        685M
Swap:          2.0G          0B        2.0G

解释:

linux系统 会把内存预分配一部分给 buff/cache

buffer和cache的区别方法

000是数据

000(磁盘)-->内存(cache)-->CPU

CPU要计算时,需要把数据从磁盘中读出来,临时放到内存中,这部分内存就是cache。

cpu(000)-->内存(buffer)-->磁盘

数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer。

因为磁盘和CPU之间的数据转换速度有点差别,所以需要通过内存来缓解这种速度换算。



total=used+free+buff/cache

avaiable:系统可使用内存有多大。

avaiable包含了free和buffer/cache剩余部分。(available是关注点)

total和available是不同的。

如果发现cache/buff占用超过真实物理内存的50%,可以考虑释放它,处理方法:https://blog.51cto.com/13578154/2150303 


10.8 ps命令


PS命令是专门显示系统进程,作用是汇报当前进程的快照。相当于windows的任务管理器。


#ps aux 把系统的所有进程都列出来

[root@DD-Server-9F ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  51632  3688 ?        Ss   6月11   0:49 /usr/lib/systemd/systemd --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    6月11   0:01 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    6月11   0:01 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   6月11   0:00 [kworker/0:0H]
root         8  0.0  0.0      0     0 ?        S    6月11   0:00 [migration/0]
root         9  0.0  0.0      0     0 ?        S    6月11   0:00 [rcu_bh]
root        10  0.0  0.0      0     0 ?        S    6月11   1:45 [rcu_sched]
root        11  0.0  0.0      0     0 ?        S    6月11   1:36 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    6月11   0:13 [watchdog/1]
root        13  0.0  0.0      0     0 ?        S    6月11   0:00 [migration/1]
root        14  0.0  0.0      0     0 ?        S    6月11   0:03 [ksoftirqd/1]
root        16  0.0  0.0      0     0 ?        S<   6月11   0:00 [kworker/1:0H]
root        17  0.0  0.0      0     0 ?        S    6月11   0:27 [kworker/u34:0]
root        18  0.0  0.0      0     0 ?        S    6月11   0:12 [watchdog/2]
root        19  0.0  0.0      0     0 ?        S    6月11   0:00 [migration/2]
root        20  0.0  0.0      0     0 ?        S    6月11   0:00 [ksoftirqd/2]
root        22  0.0  0.0      0     0 ?        S<   6月11   0:00 [kworker/2:0H]
root        23  0.0  0.0      0     0 ?        S    6月11   0:13 [watchdog/3]
root        24  0.0  0.0      0     0 ?        S    6月11   0:00 [migration/3]
root        25  0.0  0.0      0     0 ?        S    6月11   0:00 [ksoftirqd/3]
root        27  0.0  0.0      0     0 ?        S<   6月11   0:00 [kworker/3:0H]
root        30  0.0  0.0      0     0 ?        S    6月11   0:15 [kdevtmpfs]
root        31  0.0  0.0      0     0 ?        S<   6月11   0:00 [netns]
root        32  0.0  0.0      0     0 ?        S    6月11   0:01 [khungtaskd]
root        33  0.0  0.0      0     0 ?        S<   6月11   0:00 [writeback]
root        34  0.0  0.0      0     0 ?        S<   6月11   0:00 [kintegrityd]
root        35  0.0  0.0      0     0 ?        S<   6月11   0:00 [bioset]
root        36  0.0  0.0      0     0 ?        S<   6月11   0:00 [kblockd]
root        37  0.0  0.0      0     0 ?        S<   6月11   0:00 [md]
root        43  0.0  0.0      0     0 ?        S    6月11   0:00 [kswapd0]
root        44  0.0  0.0      0     0 ?        S    6月11   0:00 [kswapd1]
root        45  0.0  0.0      0     0 ?        SN   6月11   0:00 [ksmd]
root        46  0.0  0.0      0     0 ?        SN   6月11   0:11 [khugepaged]
root        47  0.0  0.0      0     0 ?        S<   6月11   0:00 [crypto]
root        55  0.0  0.0      0     0 ?        S<   6月11   0:00 [kthrotld]
root        56  0.0  0.0      0     0 ?        S    6月11   0:00 [kworker/u33:1]
root        57  0.0  0.0      0     0 ?        S<   6月11   0:00 [kmpath_rdacd]
root        58  0.0  0.0      0     0 ?        S<   6月11   0:00 [kpsmoused]
root        60  0.0  0.0      0     0 ?        S<   6月11   0:00 [ipv6_addrconf]
root        79  0.0  0.0      0     0 ?        S<   6月11   0:00 [deferwq]
root       114  0.0  0.0      0     0 ?        S    6月11   0:00 [kauditd]
root       251  0.0  0.0      0     0 ?        S<   6月11   0:00 [ata_sff]
root       252  0.0  0.0      0     0 ?        S    6月11   0:00 [scsi_eh_0]
root       254  0.0  0.0      0     0 ?        S<   6月11   0:00 [scsi_tmf_0]
root       258  0.0  0.0      0     0 ?        S    6月11   0:00 [scsi_eh_1]
root       259  0.0  0.0      0     0 ?        S<   6月11   0:00 [scsi_tmf_1]
root       263  0.0  0.0      0     0 ?        S<   6月11   0:00 [mpt_poll_0]
root       264  0.0  0.0      0     0 ?        S<   6月11   0:00 [mpt/0]
root       280  0.0  0.0      0     0 ?        S<   6月11   0:00 [ttm_swap]
root       290  0.0  0.0      0     0 ?        S<   6月11   0:06 [kworker/1:1H]
root       292  0.0  0.0      0     0 ?        S    6月11   0:00 [scsi_eh_2]
root       293  0.0  0.0      0     0 ?        S<   6月11   0:00 [scsi_tmf_2]
root       311  0.0  0.0      0     0 ?        S<   6月11   0:00 [kworker/2:1H]
root       312  0.0  0.0      0     0 ?        S<   6月11   0:43 [kworker/0:1H]
root       317  0.0  0.0      0     0 ?        S<   6月11   0:00 [bioset]
root       318  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfsalloc]
root       319  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs_mru_cache]
root       320  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-buf/sdc3]
root       321  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-data/sdc3]
root       322  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-conv/sdc3]
root       323  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-cil/sdc3]
root       324  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-reclaim/sdc]
root       325  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-log/sdc3]
root       326  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-eofblocks/s]
root       327  0.0  0.0      0     0 ?        S    6月11  13:37 [xfsaild/sdc3]
root       395  0.0  0.3  69580 28520 ?        Ss   6月11   2:42 /usr/lib/systemd/systemd-journald
root       422  0.0  0.0  43768  1672 ?        Ss   6月11   4:53 /usr/lib/systemd/systemd-udevd
root       452  0.0  0.0      0     0 ?        SN   6月11   0:00 [kipmi0]
root       472  0.0  0.0      0     0 ?        S<   6月11   0:00 [kvm-irqfd-clean]
root       473  0.0  0.0      0     0 ?        S<   6月11   0:00 [edac-poller]
root       483  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-buf/sdc1]
root       484  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-data/sdc1]
root       485  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-conv/sdc1]
root       486  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-cil/sdc1]
root       487  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-reclaim/sdc]
root       488  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-log/sdc1]
root       489  0.0  0.0      0     0 ?        S<   6月11   0:00 [xfs-eofblocks/s]
root       490  0.0  0.0      0     0 ?        S    6月11   0:00 [xfsaild/sdc1]
root       509  0.0  0.0  55452  1072 ?        S 
  

查看系统某个进程 利用grep来筛选 

格式# ps aux |grep 进程名称

[root@centos7 ~]# ps aux |grep nginx
root      1831  0.0  0.0 112676   984 pts/0    R+   17:45   0:00 grep --color=auto nginx
#这种用法和#ps aux差不多。都是显示所有进程
[root@centos7 ~]# ps -elf

关注点

PID表示进程的ID。

  • kill pid可以把相关进程杀死 用法格式是#kill 1346。如果这样都不能把终止进程的话,可以使用“kill -9 进程pid”,这样有点暴力,严重的话会丢失数据,一般少用,所以慎用。

  • 每个进程都有一个目录/proc/505(pid)/


test 

[root@centos7 ~]# vmstat 运行#vmstat命令
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 604728   2076 274284    0    0     8     2   48   54  0  0 100  0  0
[root@centos7 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 604868   2076 274316    0    0     8     2   48   54  0  0 100  0  0
 0  0      0 604852   2076 274316    0    0     0     0   45   41  0  0 100  0  0
 0  0      0 604852   2076 274316    0    0     0     0   63   53  1  0 99  0  0
^Z
[1]+  已停止               vmstat 1
[root@centos7 ~]# ps aux |grep vmstat显示T状态
root      1878  0.0  0.1 148316  1356 pts/0    T    18:09   0:00 vmstat 1 
root      1884  0.0  0.0 112676   980 pts/0    S+   18:09   0:00 grep --color=auto vmstat


[root@centos7 ~]#  fg调回前台
vmstat 1
 2  0      0 604224   2076 274452    0    0   124   149 23199 21059  0  0 100  0  0
 0  0      0 604224   2076 274452    0    0     0     0   47   43  0  0 100  0  0
[root@centos7 ~]# ps aux |grep vmstat 此时vmstat已经处于S+状态,S+状态表示sleep且处于前台。+表示前台。
root      1878  0.0  0.1 148316  1356 pts/0    S+   18:09   0:00 vmstat 1
root      1917  0.0  0.0 112676   980 pts/1    R+   18:18   0:00 grep --color=auto vmstat

注释:

STAT状态

  • Z僵尸进程。

  • <:高优先级进程。CPU资源会优先给此进程使用。

  • N:低优先级进程。

  • L:在内存中被锁了内存分页。

  • s:主进程,后面nginx或者php-fpm服务会经常有它的影子。

  • l:多线程进程,意思就是,这个进程有多个线程。

  • 线程和进程的最大的区别就是:

  • 1 进程里包含了线程,线程是进程的子单元,一个进程有多个线程。

  • 2 同一个进程下的线程全部共享相同的内存(线程与线程之间的内存互相共享),而进程之间内存相互隔离。

  • +:前台进程。

  • 不能中断的进程,通常是IO。这个状态直接影响系统的负载。

  • run状态的进程,某个时间段在使用CPU。

  • sleep状态的进程。

  • T已经停止或暂停的进程。如果我们运行一个命令,例如vmstat 1,我们按一下ctrl+z暂停进程时,用ps命令就会显示T状态。



START开始的时间

TIME开始的时长

COMMAND命令,和top的command是一样的




10.9 查看网络状态


本节学到netstat命令,此命令是用来查看网络状态的。 

linux服务器上面有很多服务,服务往往跟客户端之间进行相互通讯的,意味着,它要有监听端口,有对外通讯的端口。 netstat就是查看tcp/ip通讯的一个状态。

给系统安装一个服务,安装一个Nginx,提供一个web服务。。。。有了这些服务之后,就需要给这些服务监听一个端口。正常情况下,一台机器,它是没有任何端口监听的,如果没有任何端口,是没办法进行监听的。


*了解一下socket文件的作用。

[root@centos7 ~]#  netstat -lnp 监听端口,打印当前系统启动哪些端口。

# netstat -lntp
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:111             0.0.0.0:*               LISTEN      29345/rpcbind
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      29631/rpc.mountd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9313/nginx: worker
tcp        0      0 0.0.0.0:44083           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:45491           0.0.0.0:*               LISTEN      29015/rpc.statd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      885/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1097/master
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -
tcp6       0      0 127.0.0.1:44299         :::*                    LISTEN      16162/java
tcp6       0      0 127.0.0.1:24299         :::*                    LISTEN      16162/java
tcp6       0      0 :::34093                :::*                    LISTEN      29015/rpc.statd
tcp6       0      0 :::111                  :::*                    LISTEN      29345/rpcbind
tcp6       0      0 :::20048                :::*                    LISTEN      29631/rpc.mountd
tcp6       0      0 :::8080                 :::*                    LISTEN      16098/java
tcp6       0      0 :::22                   :::*                    LISTEN      885/sshd
tcp6       0      0 127.0.0.1:50935         :::*                    LISTEN      16125/java
tcp6       0      0 ::1:25                  :::*                    LISTEN      1097/master
tcp6       0      0 :::36699                :::*                    LISTEN      -
tcp6       0      0 127.0.0.1:54299         :::*                    LISTEN      16162/java
tcp6       0      0 :::2049                 :::*                    LISTEN      -
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      16098/java
tcp6       0      0 127.0.0.1:40935         :::*                    LISTEN      16125/java
tcp6       0      0 127.0.0.1:20935         :::*                    LISTEN      16125/java
tcp6       0      0 :::8009                 :::*                    LISTEN      16098/java
tcp6       0      0 :::3306                 :::*                    LISTEN      3626/mysqld

[root@centos7 ~]#  netstat -an查看tcp/ip状态

# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:44083           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:45491           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN
tcp        0      0 192.88.24.200:20048     192.88.34.196:60898     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61624     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60864     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60598     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61649     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61603     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61618     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60872     ESTABLISHED
tcp        0    300 192.88.24.200:22        192.88.34.196:60499     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61643     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60664     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60668     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60894     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61620     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60892     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60674     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60600     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60602     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60868     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60666     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60866     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60613     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60596     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61613     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60874     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60680     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60896     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60678     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61647     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60604     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60594     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61611     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61607     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60607     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60670     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60609     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60611     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61622     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60672     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60870     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60662     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:60676     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61605     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61609     ESTABLISHED
tcp        0      0 192.88.24.200:20048     192.88.34.196:61645     ESTABLISHED
tcp6       0      0 127.0.0.1:44299         :::*                    LISTEN
tcp6       0      0 127.0.0.1:24299         :::*                    LISTEN
tcp6       0      0 :::34093                :::*                    LISTEN
tcp6       0      0 :::111                  :::*                    LISTEN
tcp6       0      0 :::20048                :::*                    LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 127.0.0.1:50935         :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
tcp6       0      0 :::36699                :::*                    LISTEN
tcp6       0      0 127.0.0.1:54299         :::*                    LISTEN
tcp6       0      0 :::2049                 :::*                    LISTEN
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN
tcp6       0      0 127.0.0.1:40935         :::*                    LISTEN
tcp6       0      0 127.0.0.1:20935         :::*                    LISTEN
tcp6       0      0 :::8009                 :::*                    LISTEN
tcp6       0      0 :::3306                 :::*                    LISTEN
tcp6       0      0 127.0.0.1:46926         127.0.0.1:54299         ESTABLISHED
tcp6       0      0 127.0.0.1:50935         127.0.0.1:45208         ESTABLISHED
tcp6       0      0 127.0.0.1:40210         127.0.0.1:3306          ESTABLISHED
tcp6       0      0 127.0.0.1:3306          127.0.0.1:40212         ESTABLISHED
tcp6       0      0 127.0.0.1:3306          127.0.0.1:40210         ESTABLISHED
tcp6       0      0 127.0.0.1:40212         127.0.0.1:3306          ESTABLISHED
tcp6       0      0 127.0.0.1:45208         127.0.0.1:50935         ESTABLISHED
tcp6       0      0 127.0.0.1:54299         127.0.0.1:46926         ESTABLISHED
udp        0      0 0.0.0.0:20048           0.0.0.0:*
udp        0      0 0.0.0.0:49041           0.0.0.0:*
udp        0      0 0.0.0.0:111             0.0.0.0:*
udp        0      0 127.0.0.1:323           0.0.0.0:*
udp        0      0 0.0.0.0:688             0.0.0.0:*
udp        0      0 127.0.0.1:783           0.0.0.0:*
udp        0      0 0.0.0.0:54816           0.0.0.0:*
udp        0      0 0.0.0.0:2049            0.0.0.0:*
udp6       0      0 :::20048                :::*
udp6       0      0 :::111                  :::*
udp6       0      0 ::1:323                 :::*
udp6       0      0 :::688                  :::*
udp6       0      0 :::38073                :::*
udp6       0      0 :::2049                 :::*
udp6       0      0 :::47155                :::*
raw6       0      0 :::58                   :::*                    7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     18836    public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     18840    public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     18843    public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     18865    public/flush
unix  2      [ ACC ]     STREAM     LISTENING     18853    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     18856    private/defer
unix  2      [ ACC ]     STREAM     LISTENING     18859    private/trace
unix  2      [ ACC ]     STREAM     LISTENING     18847    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     18862    private/verify
unix  2      [ ACC ]     STREAM     LISTENING     18868    private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     18871    private/proxywrite
unix  2      [ ACC ]     STREAM     LISTENING     18874    private/smtp
unix  2      [ ACC ]     STREAM     LISTENING     18877    private/relay
unix  2      [ ACC ]     SEQPACKET  LISTENING     13615    /run/udev/control
unix  2      [ ]         DGRAM                    12598    /run/systemd/shutdownd
unix  2      [ ]         DGRAM                    13166    /var/run/chrony/chronyd.sock
unix  2      [ ACC ]     STREAM     LISTENING     10863    /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     2947208  /run/gssproxy.sock
unix  2      [ ACC ]     STREAM     LISTENING     3024750  /tmp/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     41886    /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     2597738  /data/web/kevin.com/kevin.com.sock
unix  2      [ ]         DGRAM                    8898     /run/systemd/notify
unix  2      [ ]         DGRAM                    8900     /run/systemd/cgroups-agent
unix  2      [ ACC ]     STREAM     LISTENING     2944463  /var/run/rpcbind.sock
unix  2      [ ACC ]     STREAM     LISTENING     8918     /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    8921     /run/systemd/journal/socket
unix  16     [ ]         DGRAM                    8923     /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     18880    public/showq
unix  2      [ ACC ]     STREAM     LISTENING     18850    private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     18883    private/error
unix  2      [ ACC ]     STREAM     LISTENING     18886    private/retry
unix  2      [ ACC ]     STREAM     LISTENING     18889    private/discard
unix  2      [ ACC ]     STREAM     LISTENING     18892    private/local
unix  2      [ ACC ]     STREAM     LISTENING     18895    private/virtual
unix  2      [ ACC ]     STREAM     LISTENING     18898    private/lmtp
unix  2      [ ACC ]     STREAM     LISTENING     2947207  /var/lib/gssproxy/default.sock
unix  2      [ ACC ]     STREAM     LISTENING     18901    private/anvil
unix  2      [ ACC ]     STREAM     LISTENING     18904    private/scache
unix  3      [ ]         STREAM     CONNECTED     18906
unix  2      [ ]         DGRAM                    13000
unix  2      [ ]         DGRAM                    13127
unix  3      [ ]         STREAM     CONNECTED     13134    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     18902
unix  2      [ ]         DGRAM                    16273
unix  3      [ ]         STREAM     CONNECTED     14219
unix  3      [ ]         STREAM     CONNECTED     18903
unix  2      [ ]         DGRAM                    14330
unix  3      [ ]         STREAM     CONNECTED     15633    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     18905
unix  2      [ ]         DGRAM                    2463463
unix  3      [ ]         STREAM     CONNECTED     13001
unix  3      [ ]         STREAM     CONNECTED     2605095
unix  2      [ ]         DGRAM                    14265
unix  2      [ ]         STREAM     CONNECTED     2953926
unix  3      [ ]         STREAM     CONNECTED     18845
unix  3      [ ]         STREAM     CONNECTED     13133
unix  3      [ ]         STREAM     CONNECTED     18899
unix  2      [ ]         DGRAM                    18910
unix  3      [ ]         STREAM     CONNECTED     18900
unix  3      [ ]         STREAM     CONNECTED     15445
unix  3      [ ]         STREAM     CONNECTED     13002
unix  3      [ ]         STREAM     CONNECTED     18894
unix  3      [ ]         STREAM     CONNECTED     18896
unix  3      [ ]         STREAM     CONNECTED     18897
unix  3      [ ]         STREAM     CONNECTED     2947206
unix  3      [ ]         STREAM     CONNECTED     18890
unix  3      [ ]         STREAM     CONNECTED     2605096
unix  3      [ ]         STREAM     CONNECTED     18891
unix  3      [ ]         STREAM     CONNECTED     11038    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     13219
unix  3      [ ]         STREAM     CONNECTED     18893
unix  2      [ ]         DGRAM                    2947203
unix  3      [ ]         STREAM     CONNECTED     2947205
unix  3      [ ]         STREAM     CONNECTED     12713    /run/systemd/journal/stdout
unix  2      [ ]         DGRAM                    3091559
unix  3      [ ]         STREAM     CONNECTED     18887
unix  3      [ ]         STREAM     CONNECTED     18888
unix  3      [ ]         STREAM     CONNECTED     14461
unix  3      [ ]         STREAM     CONNECTED     18884
unix  3      [ ]         STREAM     CONNECTED     18885
unix  3      [ ]         STREAM     CONNECTED     14218
unix  3      [ ]         STREAM     CONNECTED     18852
unix  3      [ ]         STREAM     CONNECTED     18872
unix  3      [ ]         STREAM     CONNECTED     15519
unix  3      [ ]         STREAM     CONNECTED     18869
unix  2      [ ]         STREAM     CONNECTED     2755236
unix  3      [ ]         DGRAM                    10604
unix  3      [ ]         STREAM     CONNECTED     18870
unix  2      [ ]         DGRAM                    3150919
unix  3      [ ]         STREAM     CONNECTED     2947271
unix  2      [ ]         DGRAM                    11027
unix  3      [ ]         STREAM     CONNECTED     18875
unix  3      [ ]         STREAM     CONNECTED     15615
unix  2      [ ]         DGRAM                    10594
unix  3      [ ]         STREAM     CONNECTED     18637
unix  2      [ ]         DGRAM                    36755
unix  3      [ ]         STREAM     CONNECTED     18876
unix  3      [ ]         STREAM     CONNECTED     16089
unix  3      [ ]         STREAM     CONNECTED     18873
unix  3      [ ]         STREAM     CONNECTED     2951046
unix  3      [ ]         STREAM     CONNECTED     13074    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18879
unix  3      [ ]         STREAM     CONNECTED     18639    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18752    /var/run/dbus/system_bus_socket
unix  2      [ ]         DGRAM                    11146
unix  3      [ ]         STREAM     CONNECTED     15616    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     43144
unix  2      [ ]         DGRAM                    2944964
unix  3      [ ]         STREAM     CONNECTED     36748    /var/run/dbus/system_bus_socket
unix  2      [ ]         STREAM     CONNECTED     2754184
unix  3      [ ]         STREAM     CONNECTED     18878
unix  3      [ ]         STREAM     CONNECTED     18881
unix  3      [ ]         STREAM     CONNECTED     3114864
unix  3      [ ]         STREAM     CONNECTED     18638    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18882
unix  2      [ ]         DGRAM                    15618
unix  3      [ ]         STREAM     CONNECTED     13030    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18834
unix  2      [ ]         DGRAM                    2951052
unix  3      [ ]         STREAM     CONNECTED     2951045
unix  2      [ ]         STREAM     CONNECTED     2755210
unix  3      [ ]         STREAM     CONNECTED     18855
unix  3      [ ]         STREAM     CONNECTED     3114865
unix  3      [ ]         STREAM     CONNECTED     2947277  /run/gssproxy.sock
unix  3      [ ]         STREAM     CONNECTED     18837
unix  3      [ ]         STREAM     CONNECTED     15722
unix  2      [ ]         STREAM     CONNECTED     2755238
unix  3      [ ]         STREAM     CONNECTED     11224    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     18854
unix  3      [ ]         STREAM     CONNECTED     13143    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     11015
unix  3      [ ]         STREAM     CONNECTED     41930
unix  3      [ ]         STREAM     CONNECTED     18849
unix  3      [ ]         STREAM     CONNECTED     3114866
unix  3      [ ]         STREAM     CONNECTED     18848
unix  3      [ ]         STREAM     CONNECTED     18841
unix  2      [ ]         STREAM     CONNECTED     2754223
unix  3      [ ]         STREAM     CONNECTED     18860
unix  3      [ ]         STREAM     CONNECTED     18857
unix  3      [ ]         STREAM     CONNECTED     18858
unix  3      [ ]         STREAM     CONNECTED     18863
unix  3      [ ]         STREAM     CONNECTED     2947157  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18844
unix  3      [ ]         STREAM     CONNECTED     18864
unix  3      [ ]         STREAM     CONNECTED     2946263
unix  3      [ ]         STREAM     CONNECTED     18835
unix  3      [ ]         STREAM     CONNECTED     18861
unix  3      [ ]         STREAM     CONNECTED     3114867
unix  3      [ ]         STREAM     CONNECTED     36753    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18842
unix  2      [ ]         STREAM     CONNECTED     2755212
unix  3      [ ]         STREAM     CONNECTED     18867
unix  3      [ ]         DGRAM                    10605
unix  3      [ ]         STREAM     CONNECTED     18851
unix  3      [ ]         STREAM     CONNECTED     10933
unix  3      [ ]         STREAM     CONNECTED     18751
unix  3      [ ]         STREAM     CONNECTED     18838
unix  3      [ ]         STREAM     CONNECTED     18866


查看tcp udp状态

[root@centos7 ~]#  netstat -ltunp
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:22              0.0.0.0:*               LISTEN      949/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1055/master         
tcp6       0      0 :::22                   :::*                    LISTEN      949/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1055/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           577/chronyd         
udp6       0      0 ::1:323                 :::*                                577/chronyd


[root@centos7 ~]# netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
LISTEN  4
ESTABLISHED  1

关注ESTABLISHED ,如果这数字很大,说明系统很忙。


#ss -an 也可以查看tcp/ip状态

查看listen状态

#ss -an |grep -i listen


ppt在*centos7.aminglinux.com 

*了解一下socket文件的作用。三次握手过程。



10.10 Linux下抓包


大纲

抓包工具

有时也许想看一下某个网卡上都有哪些数据包,尤其是当你初步绑定服务器上有流量***时,使用抓包工具来获取数据包就可以知道有哪些IP在***了。



#tcpdump -nn -i 网卡名字 (网卡名称可以在ifconfig查看)

# ifconfig
enp4s0: flags=4163  mtu 1500
        inet 192.88.24.200  netmask 255.255.255.0  broadcast 192.88.24.255
        inet6 fe80::2ad9:5a78:700c:eaee  prefixlen 64  scopeid 0x20
        ether 00:1e:c9:2b:1a:e5  txqueuelen 1000  (Ethernet)
        RX packets 3565263  bytes 1091650130 (1.0 GiB)
        RX errors 0  dropped 242  overruns 0  frame 0
        TX packets 509115  bytes 67701952 (64.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
# tcpdump -nn -i enp4s0 源地址IP地址显示
10:53:05.900482 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18463892:18464072, ack 2581, win 641, length 180
10:53:05.900507 IP 192.88.34.196.60499 > 192.88.24.200.22: Flags [.], ack 18463712, win 16069, length 0
10:53:05.900530 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18464072:18464252, ack 2581, win 641, length 180
10:53:05.900642 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18464252:18464432, ack 2581, win 641, length 180
10:53:05.900748 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18464432:18464596, ack 2581, win 641, length 164
10:53:05.900856 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18464596:18464904, ack 2581, win 641, length 308
10:53:05.900962 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18464904:18465084, ack 2581, win 641, length 180
10:53:05.901068 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18465084:18465264, ack 2581, win 641, length 180
10:53:05.901175 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18465264:18465444, ack 2581, win 641, length 180
10:53:05.901282 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18465444:18465624, ack 2581, win 641, length 180
10:53:05.901713 IP 192.88.34.196.60499 > 192.88.24.200.22: Flags [.], ack 18465624, win 16425, length 0
10:53:05.901741 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18465624:18465984, ack 2581, win 641, length 360
10:53:05.901852 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18465984:18466148, ack 2581, win 641, length 164
10:53:05.901964 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18466148:18466508, ack 2581, win 641, length 360
10:53:05.902082 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18466508:18466688, ack 2581, win 641, length 180
10:53:05.902197 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18466688:18466868, ack 2581, win 641, length 180
10:53:05.902313 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18466868:18467048, ack 2581, win 641, length 180
10:53:05.902429 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18467048:18467228, ack 2581, win 641, length 180
10:53:05.902544 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18467228:18467408, ack 2581, win 641, length 180
10:53:05.902661 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18467408:18467588, ack 2581, win 641, length 180
10:53:05.902782 IP 192.88.24.200.22 > 192.88.34.196.60499: Flags [P.], seq 18467588:18467768, ack 2581, win 641, length 180
10:53:05.902976 IP 192.88.34.196.60499 > 192.88.24.200.22: Flags [P.], seq 2581:2633, ack 18465624, win 16425, length 52
^C10:53:05.903039 IP 192.88.34.196.60499 > 192.88.24.200.22: Flags [.], ack 18467768, win 15889, length 0

104225 packets captured
104228 packets received by filter
0 packets dropped by kernel


关于数据信息:

第一列是时间,第二列是ip,源IP,源端口 > 到哪里去 方向去 目标ip 目标ip端口 flage开始 数据包的信息。

主要关注源ip和源端口。

-nn 第一个n ip用数字显示出来,如果不加,会显示主机名。 一般使用-nn


[root@centos7 ~]# tcpdump -n -i enp4s0 源地址主机名显示
10:55:50.640134 IP 192.88.24.200.ssh > 192.88.34.196.60499: Flags [P.], seq 2094760:2094940, ack 261, win 641, length 180
10:55:50.640252 IP 192.88.24.200.ssh > 192.88.34.196.60499: Flags [P.], seq 2094940:2095120, ack 261, win 641, length 180
10:55:50.640370 IP 192.88.24.200.ssh > 192.88.34.196.60499: Flags [P.], seq 2095120:2095300, ack 261, win 641, length 180
10:55:50.640487 IP 192.88.24.200.ssh > 192.88.34.196.60499: Flags [P.], seq 2095300:2095480, ack 261, win 641, length 180
10:55:50.640604 IP 192.88.24.200.ssh > 192.88.34.196.60499: Flags [P.], seq 2095480:2095660, ack 261, win 641, length 180
10:55:50.640684 IP 192.88.34.196.60499 > 192.88.24.200.ssh: Flags [P.], seq 261:313, ack 2093568, win 16114, length 52
10:55:50.640791 IP 192.88.24.200.ssh > 192.88.34.196.60499: Flags [P.], seq 2095660:2095840, ack 313, win 641, length 180
^C
11850 packets captured
11851 packets received by filter
0 packets dropped by kernel


所看到的ssh是22端口,如果不知道ssh表示22端口,例如其他名称的 不知道指定端口的,那就容易看不到详细信息了。


信息一一对应 有来有回


#*了解 DDOS***,udp flood  udp洪水***。
#指定端口
[root@centos7 ~]#  tcpdump -nn -i ens33 port 22
#排除端口用法
[root@centos7 ~]#  tcpdump -nn -i ens33 not port 22
#指定端口,指定主机ip
[root@centos7 ~]# tcpdump -nn -i ens33  port 22 and host 192.168.189.128

数据包指定长度,指定个数,存到一个文件上

例如,指定长度,指定100个。

[root@centos7 ~]# tcpdump -nn -i ens33 -c 100 -w /tmp/1.cap



抓包过程中,是比较缓慢的,类似暂停状态。此时可以打开一个新的终端。

如果在这个终端不去产生一些数据流的话,那么它就不会产生那么多的数据包。 

例如在使用tcpdump查看数据包的时候,其实就是在通讯产生数据流,所以有数据包产生,这是一个内循环。

如果此终端不产生任何数据,不产生任何的信息,那它就没有任何的数据包。 产生数据包了,屏幕(暂停的界面)自然而然会有数据了。所以打开一个新的终端,利用新的终端去产生数据包,这样就能继续进行抓包。


抓包成功提示,

数据包 1.cap

用#file查看属性,不能用cat查看,因为这是网卡捕获的信息,其实它是一个真正的通讯数据包信息,而不是文本格式。


抓包命令常用示例:

tcpdump -nn -i ens33 -c 100
#指定抓100个包
tcpdump -nn -i ens33 port 22 
#指定只抓22端口的包
tcpdump -nn -i ens33 tcp and not port 22 
#指定抓tcp的包,但是不要22端口的
tcpdump -nn -i ens33 port 22 and port 53
#指定抓22和53端口的包

读数据流(数据包里面的数据就叫数据流),需要利用#tcpdump -r /tmp/1.cap 

[root@centos7 ~]# file /tmp/1.cap 
/tmp/1.cap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 262144)

#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"