第十三课预习笔记

Linux日常管理技巧

       作为一个Linux系统工程师,对自己的系统一定要了解,以防出现问题。当系统出现问题时,我们要会借助各种工具排查,最终判定问题所在。

10.1 使用w查看系统负载

w命令:用于显示目前登入系统的用户信息。

第一行分为3段。第一段,显示系统时间及用户登录时长;第二段,显示系统登录用户数量(可以从下面几行看到);第三段,显示1分钟、5分钟、15分钟的系统负载。

w命令中主要的是系统负载项 load average 数值,跟CPU有关,表示单位时间内使用CPU活动的进程数。数值可以是小数,也可以是几十或更大。数值为 “1” 是最理想的。

这样一来每个cpu都在工作中,没有闲置和等待

cat /proc/cpuinfo 查看cpu数量。

关于cpu信息的内容可以参考下这篇文章。

https://blog.csdn.net/sycflash/article/details/6643492

uptime命令 此命令和w命令的第一行一样。

[root@liang-00 ~]# uptime 
 15:50:50 up  4:08,  1 user,  load average: 0.00, 0.01, 0.05
[root@liang-00 ~]# 

10.2 vmstat命令

vmstat命令 显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

“1” 表示每个一分钟打印一次,“5” 表示一共打印5次。

[root@liang-00 ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 742520   2108 138444    0    0     4     1   35   30  0  0 100  0  0
 0  0      0 742528   2108 138476    0    0     0     0   90   86  0  0 100  0  0
 0  0      0 742528   2108 138476    0    0     0     0   94   85  0  0 100  0  0
 0  0      0 742528   2108 138476    0    0     0     0   81   77  0  0 100  0  0
 0  0      0 742528   2108 138476    0    0     0     0   94   84  0  0 100  0  0

我们主要关心的列:r    b    swpd    si    so    bi    bo    us    wa

r:运行队列中进程数量(包括正在等待使用的进程),这个值也可以判断是否需要增加CPU;

b:等待IO的进程数量(被阻塞的);

swpd:使用swap大小,它的值或为0或者是某一个数值不变,如果swpd值在不断变化则可能是内存不够用了,如果swpd的值不为0,但是si,so的值长期为0,这种情况不会影响系统性能;如果swpd频繁变动,si、so也会跟着变动的;

si:每秒从交换区写到内存的大小,由磁盘调入内存(KB/S);

so:每秒写入交换区的内存大小,由内存调入磁盘(KB/S);

bi:每秒从磁盘中读取的块数,进入到内存中。

bo:每秒写入磁盘中的块数,从内存中出来。

us:用户进程执行时间百分比

sy:内核系统本身进程执行时间百分比

id:空闲百分比

(其中 us+sy+id=100)

wa:等待io的时间。

10.3 top命令

top命令 可以实时动态地(3秒钟)查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

第一行:和 w命令 显示的数据一样。

第二行:tasks任务;total,总进程数;running,正在运行的进程;sleeping,睡眠进程;stopped,停止的进程数;

             zombie,僵尸进程,主进程意外终止,残余的子进程。

第三行:cpu占用百分比,主要关注:us(长时间在%60以上说明cpu负担比较大)、sy、id、wa;st表示被偷走的cpu资源,比如说运行在服务器上的虚拟机。

第四行:内存,total物理内存总量,free空闲内存量,used已使用内存量。

第五行:swap,交换分区,

 

之后的详细信息,默认会以 %CPU 从高到底来排序。%MEM是内存使用情况,RES为物理内存大小(KB)

按 “M” 可以切换到以 %MEM 大小来排序,按 “P” 切回 %CPU 排序。

按数字 “1” 切换不同 CPU。

%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

top -c 查看具体完整的命令。

[root@liang-00 ~]# top -c
top - 12:11:31 up  1:37,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 107 total,   2 running, 105 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1006944 total,   752080 free,   122260 used,   132604 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   732756 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                             
  467 root      20   0       0      0      0 S   0.3  0.0   0:00.94 [xfsaild/dm-0]                                      
    1 root      20   0   43420   3772   2548 S   0.0  0.4   0:02.33 /usr/lib/systemd/systemd --switched-root --system -+
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 [kthreadd]                                          
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.11 [ksoftirqd/0]                                       
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]                                      
    6 root      20   0       0      0      0 S   0.0  0.0   0:00.19 [kworker/u128:0]                                    
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 [migration/0]                                       
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]                                            
    9 root      20   0       0      0      0 S   0.0  0.0   0:02.25 [rcu_sched]     

top -bn1 静态的显示完整的信息,适合在写shell脚本时使用。

PID:进程号,在杀死进程时会用到。kill PID

 

10.4 sar命令

sar命令 是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

sar命令 每10分钟会自动扫描系统状态保存到自己的日志目录里 /var/log/sa/ 。

sar日志文件命令中会生成与sa开头的文件对应的sar开头的文件,sa开头的文件是一个二进制文件用cat 无法查看,sar开头的文件则可以。

[root@liang-00 ~]# ls /var/log/sa
sa11  sa12  sa13  sa14  sa15
[root@liang-00 ~]# 

用sar命令查看网卡使用情况 sar -n DEV 1 2

[root@liang-00 ~]# sar -n DEV 1 2
Linux 3.10.0-862.el7.x86_64 (liang-00)     11/15/2018     _x86_64_    (2 CPU)

12:29:57 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:29:58 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:29:58 PM     ens33      1.00      1.00      0.06      0.17      0.00      0.00      0.00

12:29:58 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:29:59 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:29:59 PM     ens33      1.00      1.00      0.06      0.37      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        ens33      1.00      1.00      0.06      0.27      0.00      0.00      0.00
[root@liang-00 ~]# 

可以看到系统有两个网卡:lo、ens33,其中:

IFACE:表示网卡名

rxpck/s:表示每秒接收的数据包,当受到攻击时,它会异常的变得很大一般正常范围为:几千或以下,如果是上万的话就不太正常了

txpck/s:表示每秒发送的数据包;

rxkB/s:每秒接收的数据量;

txkB/s:每秒接收的数据量;

 

sar -n DEV -f /var/log/sa/sa14  提取指定文件的历史数据(历史数据最多保留一个月,且生成的日志文件以日期号结尾)。

[root@liang-00 ~]# sar -n DEV -f /var/log/sa/sa14
Linux 3.10.0-862.el7.x86_64 (liang-00)     11/14/2018     _x86_64_    (2 CPU)

10:42:13 AM       LINUX RESTART

10:50:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:00:01 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:00:01 AM     ens33      0.66      0.15      0.04      0.01      0.00      0.00      0.00
11:10:01 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:10:01 AM     ens33      0.63      0.15      0.04      0.01      0.00      0.00      0.00
11:20:01 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:01 AM     ens33      0.96      0.39      0.07      0.04      0.00      0.00      0.00
11:30:01 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM     ens33      2.14      1.06      0.18      0.19      0.00      0.00      0.00
11:40:01 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:40:01 AM     ens33      1.52      0.07      0.11      0.01      0.00      0.00      0.00
11:50:02 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:50:02 AM     ens33      0.85      0.06      0.06      0.00      0.00      0.00      0.00
12:00:01 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:00:01 PM     ens33      0.68      0.16      0.05      0.02      0.00      0.00      0.00

sar -q  查看系统的负载,一般查看历史数据的时候比较多(sar -q -f /var/log/sa/)。

[root@liang-00 ~]# sar -q
Linux 3.10.0-862.el7.x86_64 (liang-00)     11/15/2018     _x86_64_    (2 CPU)

10:34:28 AM       LINUX RESTART

10:40:05 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:50:01 AM         0       119      0.00      0.01      0.05         0
11:00:01 AM         0       119      0.00      0.01      0.05         0
11:10:01 AM         0       122      0.02      0.02      0.05         0
11:20:01 AM         0       122      0.00      0.01      0.05         0
11:30:01 AM         0       122      0.00      0.05      0.05         0

10.5 nload命令

nload命令 查看网卡实时数据。

用左右方向键可以切换网卡。

一般服务器上 Outgoing 数据量比较大,如果遭受到攻击,Incoming 流量就会变得比较大。

10.6 监控io性能

iostat、iotop监控磁盘状态。

运维工作中,磁盘状况也是一个非常重要的指标。在检查cpu和内存性能时可能发现会出现它们都正常,但是系统依然存在问题,这时我们就要看下磁盘状况了。

iostat -x 

[root@liang-00 ~]# iostat -x
Linux 3.10.0-862.el7.x86_64 (liang-00)     11/15/2018     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.10    0.00    0.23    0.18    0.00   99.49

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.47    0.27    15.13     6.15    57.39     0.02   20.78   18.79   24.24   8.59   0.64
sdb               0.00     0.00    0.03    0.00     0.29     0.00    22.60     0.00    5.45    5.45    0.00   4.23   0.01
dm-0              0.00     0.00    0.30    0.13    14.34     6.00    93.37     0.02   37.18   29.26   55.51  14.21   0.62
dm-1              0.00     0.00    0.01    0.00     0.16     0.00    47.40     0.00    5.38    5.38    0.00   5.13   0.00
dm-2              0.00     0.00    0.00    0.00     0.08     0.00    48.19     0.00    1.91    1.91    0.00   1.72   0.00

[root@liang-00 ~]# 

其中 %util 列,比较重要:等待IO的时间百分比,数字比较大的时候表示磁盘很忙。

 

iotop命令 查看正在读写的进程,主要关注 IO> 列

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                                                   
 1948 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.07 % [kworker/1:1]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
 1027 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % python -Es /usr/sbin/firewalld --nofork --nopid [gmain]
    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
    6 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u128:0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
   10 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [lru-add-dra

10.7 free命令

free命令 查看内存使用情况。

[root@liang-00 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           983M        120M        565M        7.4M        296M        698M
Swap:          2.0G          0B        2.0G
[root@liang-00 ~]# 

第一行:选项,

第二行:内存使用情况。

第三列:交换分区使用情况。

buffer和cache

cache:当磁盘中有些数据需要cpu处理,需要经过内存再到cpu,而进入到内存中的这一部分数据就叫做cache。

buffer:指的是经过cpu处理过的,准备写入磁盘的数据。

所以内存的 total=used+free+buff/cache。

available就等于free加上buff和cache剩余的部分。一般我们查看内存剩余的时候主要关注 available。

10.8 ps命令

ps 查看系统进程。

用法:ps aux ;ps -elf

ps aux 列出当前的所有进程。

[root@liang-00 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3  43420  3772 ?        Ss   10:34   0:02 /usr/lib/systemd/systemd --switched-root --system --dese
root         2  0.0  0.0      0     0 ?        S    10:34   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    10:34   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   10:34   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    10:34   0:00 [kworker/u128:0]
root         7  0.0  0.0      0     0 ?        S    10:34   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    10:34   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    10:34   0:12 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<   10:34   0:00 [lru-add-drain]
root        11  0.0  0.0      0     0 ?        S    10:34   0:00 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    10:34   0:00 [watchdog/1]
root        13  0.0  0.0      0     0 ?        S    10:34   0:00 [migration/1]

PID:进程号,在需要杀死某个进程时可以用 kill+PID ,还可以查看某个进程的具体运行情况,用 ll /proc/PID/;

例如:查看进程为号为696的进程。

[root@liang-00 ~]# ll /proc/696/
total 0
dr-xr-xr-x 2 root root 0 Nov 15 10:34 attr
-rw-r--r-- 1 root root 0 Nov 15 15:59 autogroup
-r-------- 1 root root 0 Nov 15 15:59 auxv
-r--r--r-- 1 root root 0 Nov 15 10:34 cgroup
--w------- 1 root root 0 Nov 15 15:59 clear_refs
-r--r--r-- 1 root root 0 Nov 15 10:34 cmdline
-rw-r--r-- 1 root root 0 Nov 15 10:34 comm
-rw-r--r-- 1 root root 0 Nov 15 15:59 coredump_filter
-r--r--r-- 1 root root 0 Nov 15 15:59 cpuset
lrwxrwxrwx 1 root root 0 Nov 15 15:59 cwd -> /
-r-------- 1 root root 0 Nov 15 15:59 environ
lrwxrwxrwx 1 root root 0 Nov 15 10:34 exe -> /usr/sbin/auditd
dr-x------ 2 root root 0 Nov 15 15:59 fd
dr-x------ 2 root root 0 Nov 15 15:59 fdinfo
-rw-r--r-- 1 root root 0 Nov 15 15:59 gid_map

VSZ:虚拟内存;

RSS:物理内存;

STAT:状态(重点)

  •    D 不能中断的进程(它会直接影响系统负载,中断了可能会影响到一些服务)
  •    R 正在运行,或在队列中的进程
  •    S 处于休眠状态的进程(vmstat 1 就是一个)
  •    T 停止或被追踪的进程
  •    Z 僵尸进程(如果系统中僵尸进程比较多的话,要想办法杀死)
  •    < 高优先级的进程
  •    l  多线程进程(需要查些资料学习一下多线程)
  •    N  低优先级进程
  •    L  内存中被锁了内存的分页
  •    s   主进程
  •    +  前台进程

关于进程和线程,这几篇文章讲的不错:

https://blog.csdn.net/yusiguyuan/article/details/12154823

https://my.oschina.net/cnyinlinux/blog/422207

https://blog.csdn.net/Crazy_Tengt/article/details/73441141

 

查看是否有某一个进程。

ps aux |grep ‘nginx’

[root@liang-00 ~]# ps aux |grep 'nginx'
root      2095  0.0  0.2 120808  2092 ?        Ss   15:52   0:00 nginx: master process /usr/sbin/nginx
nginx     2096  0.0  0.3 121272  3128 ?        S    15:52   0:00 nginx: worker process
nginx     2097  0.0  0.3 121272  3128 ?        S    15:52   0:00 nginx: worker process
root      2231  0.0  0.0 112704   968 pts/0    S+   15:53   0:00 grep --color=auto nginx

10.9 查看网络状态

netstat命令 用于显示网络状态。利用netstat指令可让你得知整个Linux系统的网络情况。

服务器系统,上面的服务主要是对外通信的,所以要有监听端口

netstat主要参数:

  • -a或--all:显示所有连线中的Socket;
  • -A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
  • -c或--continuous:持续列出网络状态;
  • -C或--cache:显示路由器配置的快取信息;
  • -e或--extend:显示网络其他相关信息;
  • -F或--fib:显示FIB;
  • -g或--groups:显示多重广播功能群组组员名单;
  • -h或--help:在线帮助;
  • -i或--interfaces:显示网络界面信息表单;
  • -l或--listening:显示监控中的服务器的Socket;
  • -M或--masquerade:显示伪装的网络连线;
  • -n或--numeric:直接使用ip地址,而不通过域名服务器;
  • -N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
  • -o或--timers:显示计时器;
  • -p或--programs:显示正在使用Socket的程序识别码和程序名称;
  • -r或--route:显示Routing Table;
  • -s或--statistice:显示网络工作信息统计表;
  • -t或--tcp:显示TCP传输协议的连线状况;
  • -u或--udp:显示UDP传输协议的连线状况;
  • -v或--verbose:显示指令执行过程;
  • -V或--version:显示版本信息;
  • -w或--raw:显示RAW传输协议的连线状况;
  • -x或--unix:此参数的效果和指定"-A unix"参数相同;
  • --ip或--inet:此参数的效果和指定"-A inet"参数相同。

netstat -lnp 查看监听的端口。

[root@liang-00 ~]# 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:80              0.0.0.0:*               LISTEN      2095/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1101/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1231/master         
tcp6       0      0 :::80                   :::*                    LISTEN      2095/nginx: master  
tcp6       0      0 :::22                   :::*                    LISTEN      1101/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1231/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           726/chronyd         
udp6       0      0 ::1:323                 :::*                                726/chronyd         
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     13100    1/systemd            /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     13149    1/systemd            /run/lvm/lvmetad.socket
unix  2      [ ACC ]     STREAM     LISTENING     18974    1231/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     18977    1231/master          private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     18980    1231/master          private/bounce

netstat -an

[root@liang-00 ~]# 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:80              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     52 192.168.37.200:22       192.168.37.1:50927      ESTABLISHED
tcp6       0      0 :::80                   :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                               
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     13100    /run/systemd/private
unix  2      [ ]         DGRAM                    13129    /run/systemd/shutdownd
unix  2      [ ACC ]     STREAM     LISTENING     13149    /run/lvm/lvmetad.socket

TCP/IP 协议和三次握手、四次挥手。

检查所有状态统计,netstat -an |awk '/^tcp/{++sta[$NF]}END{for(key in sta) print key,"\t",sta[key]}'

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

ESTABLISHED:表示正在通信的进程,参数很大,说明服务器很忙。

ss -an 和netstat类似。

[root@liang-00 ~]# ss -an |grep -i 'listen'
u_str  LISTEN     0      128    /run/systemd/private 13100                 * 0                  
u_str  LISTEN     0      128    /run/lvm/lvmetad.socket 13149                 * 0                  
u_str  LISTEN     0      100    private/tlsmgr 18974                 * 0                  
u_str  LISTEN     0      100    private/rewrite 18977                 * 0                  
u_str  LISTEN     0      100    private/bounce 18980                 * 0                  
u_str  LISTEN     0      100    private/defer 18983                 * 0                  
u_str  LISTEN     0      100    private/trace 18986                 * 0                  
u_str  LISTEN     0      100    private/verify 18989                 * 0                  
u_str  LISTEN     0      100    private/proxymap 18995                 * 0                  
u_str  LISTEN     0      100    private/proxywrite 18998                 * 0                  
u_str  LISTEN     0      100    private/smtp 19001                 * 0          

10.10 Linux下抓包

tcpdump命令 抓取网络接口的数据包。

  • -a:尝试将网络和广播地址转换成名称;
  • -c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
  • -d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
  • -dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
  • -ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
  • -e:在每列倾倒资料上显示连接层级的文件头;
  • -f:用数字显示网际网络地址;
  • -F<表达文件>:指定内含表达方式的文件;
  • -i<网络界面>:使用指定的网络截面送出数据包;
  • -l:使用标准输出列的缓冲区;
  • -n:不把主机的网络地址转换成名字;
  • -N:不列出域名;
  • -O:不将数据包编码最佳化;
  • -p:不让网络界面进入混杂模式;
  • -q :快速输出,仅列出少数的传输协议信息;
  • -r<数据包文件>:从指定的文件读取数据包数据;
  • -s<数据包大小>:设置每个数据包的大小;
  • -S:用绝对而非相对数值列出TCP关联数;
  • -t:在每列倾倒资料上不显示时间戳记;
  • -tt: 在每列倾倒资料上显示未经格式化的时间戳记;
  • -T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
  • -v:详细显示指令执行过程;
  • -vv:更详细显示指令执行过程;
  • -x:用十六进制字码列出数据包资料;
  • -w<数据包文件>:把数据包数据写入指定的文件。

tcpdump -nn -i ens33,抓取ens33网卡的数据包,-nn不解析域名,

22:17:54.495740 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 566476:566640, ack 105, win 298, length 164
22:17:54.495966 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 566640:566900, ack 105, win 298, length 260
22:17:54.496211 IP 192.168.37.1.50927 > 192.168.37.200.22: Flags [.], ack 566900, win 213, length 0
22:17:54.496266 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 566900:567064, ack 105, win 298, length 164
22:17:54.496565 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 567064:567324, ack 105, win 298, length 260
22:17:54.497015 IP 192.168.37.1.50927 > 192.168.37.200.22: Flags [.], ack 567324, win 211, length 0
22:17:54.497041 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 567324:567488, ack 105, win 298, length 164
22:17:54.497457 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 567488:567748, ack 105, win 298, length 260
22:17:54.500421 IP 192.168.37.1.50927 > 192.168.37.200.22: Flags [P.], seq 105:157, ack 567488, win 211, length 52
^C
3994 packets captured
3995 packets received by filter
0 packets dropped by kernel
[root@liang-00 ~]# tcpdump  -nn -i ens33

抓取指定端口 tcpdump  -nn -i ens33 port 22

22:23:47.680162 IP 192.168.37.1.50927 > 192.168.37.200.22: Flags [.], ack 734584, win 250, length 0
22:23:47.680346 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 734584:734844, ack 105, win 298, length 260
22:23:47.680669 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 734844:735008, ack 105, win 298, length 164
22:23:47.680868 IP 192.168.37.1.50927 > 192.168.37.200.22: Flags [.], ack 735008, win 248, length 0
22:23:47.680963 IP 192.168.37.200.22 > 192.168.37.1.50927: Flags [P.], seq 735008:735172, ack 105, win 298, length 164
22:23:47.884306 IP 192.168.37.1.50927 > 192.168.37.200.22: Flags [.], ack 735008, win 256, length 0
22:23:47.884328 IP 192.168.37.1.50927 > 192.168.37.200.22: Flags [P.], seq 105:157, ack 735172, win 256, length 52
^C
5186 packets captured
5187 packets received by filter
0 packets dropped by kernel
[root@liang-00 ~]# tcpdump  -nn -i ens33 port 22

抓取指定host的包  tcpdump  -nn -i ens33 not port 22 and host 192.168.37.1

[root@liang-00 ~]# tcpdump  -nn -i ens33 not port 22 and host 192.168.37.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
22:26:27.795400 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:28.595466 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:29.595592 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:30.795875 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:31.594953 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:32.595112 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:33.796366 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:34.595484 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:35.595616 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46
22:26:45.798414 ARP, Request who-has 192.168.37.2 tell 192.168.37.1, length 46

指定抓取的数据包个数,并且保存到文件。

[root@liang-00 ~]# tcpdump  -nn -i ens33 -c 10 -w /tmp/1.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
10 packets captured
10 packets received by filter
0 packets dropped by kernel
[root@liang-00 ~]# 

我们可以查看1.cap的文件类型 file 1.cap,无法用cat查看。

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

tcpdump -r /tmp/1.cap-r 选项来查看抓取的数据包。

[root@liang-00 ~]# tcpdump -r /tmp/1.cap 
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
22:29:18.669295 IP liang-00.ssh > 192.168.37.1.50927: Flags [P.], seq 2962249662:2962249794, ack 1481587541, win 298, length 132
22:29:18.669875 IP 192.168.37.1.50927 > liang-00.ssh: Flags [.], ack 132, win 254, length 0
22:29:21.819402 ARP, Request who-has gateway tell 192.168.37.1, length 46
22:29:21.933789 IP 192.168.37.1.50927 > liang-00.ssh: Flags [P.], seq 1:37, ack 132, win 254, length 36
22:29:22.002288 IP liang-00.ssh > 192.168.37.1.50927: Flags [.], ack 37, win 298, length 0
22:29:22.615258 ARP, Request who-has gateway tell 192.168.37.1, length 46
22:29:22.953509 IP liang-00.35452 > ntp1.flashdance.cx.ntp: NTPv4, Client, length 48
22:29:23.615538 ARP, Request who-has gateway tell 192.168.37.1, length 46
22:29:24.819875 ARP, Request who-has gateway tell 192.168.37.1, length 46
22:29:25.615883 ARP, Request who-has gateway tell 192.168.37.1, length 46
[root@liang-00 ~]# 

wireshark工具中的 tshark命令在线上服务其中可以抓取外部主机访问web网站的详细信息。

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"

10.11 Linux网络相关

ifconfig 查看的ip(yum install -y net-tools)

ifup ens33和ifdown ens33---单独针对特定网卡进行更改时,

    可以两个命令一起执行

    ifdown ens33 && ifup ens33

设置虚拟网卡ens33:0

[root@liang-00 ~]# cd /etc/sysconfig/network-scripts/
[root@liang-00 network-scripts]# ls
ifcfg-ens33  ifdown-ippp  ifdown-routes    ifup          ifup-ipv6   ifup-ppp       ifup-tunnel
ifcfg-lo     ifdown-ipv6  ifdown-sit       ifup-aliases  ifup-isdn   ifup-routes    ifup-wireless
ifdown       ifdown-isdn  ifdown-Team      ifup-bnep     ifup-plip   ifup-sit       init.ipv6-global
ifdown-bnep  ifdown-post  ifdown-TeamPort  ifup-eth      ifup-plusb  ifup-Team      network-functions
ifdown-eth   ifdown-ppp   ifdown-tunnel    ifup-ippp     ifup-post   ifup-TeamPort  network-functions-ipv6
[root@liang-00 network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:0    #添加虚拟网卡
[root@liang-00 network-scripts]# ls
ifcfg-ens33    ifdown-ippp    ifdown-sit       ifup-bnep  ifup-plusb   ifup-TeamPort
ifcfg-ens33:0  ifdown-ipv6    ifdown-Team      ifup-eth   ifup-post    ifup-tunnel
ifcfg-lo       ifdown-isdn    ifdown-TeamPort  ifup-ippp  ifup-ppp     ifup-wireless
ifdown         ifdown-post    ifdown-tunnel    ifup-ipv6  ifup-routes  init.ipv6-global
ifdown-bnep    ifdown-ppp     ifup             ifup-isdn  ifup-sit     network-functions
ifdown-eth     ifdown-routes  ifup-aliases     ifup-plip  ifup-Team    network-functions-ipv6
[root@liang-00 network-scripts]# vi ifcfg-ens33:0

编辑ens33:0

之后就可以用 ifdown ens33 && ifup ens33 来重启更改指定网卡ens33了。

[root@liang-00 network-scripts]# ifdown ens33 && ifup ens33
Determining if ip address 192.168.37.199 is already in use for device ens33...
[root@liang-00 network-scripts]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.37.200  netmask 255.255.255.0  broadcast 192.168.37.255
        inet6 fe80::20c:29ff:fef5:8a7f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:f5:8a:7f  txqueuelen 1000  (Ethernet)
        RX packets 168908  bytes 37603116 (35.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 252738  bytes 71223498 (67.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.37.199  netmask 255.255.255.0  broadcast 192.168.37.255
        ether 00:0c:29:f5:8a:7f  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

mii-tool ens33 查看网卡是否连接。link ok 表名有网线连接。

同样可以用 enstool ens33

[root@liang-00 network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
[root@liang-00 network-scripts]# 

查看DNS配置文件 cat /etc/resolv.conf,临时更改DNS可以用这个文件更改,之后重启还会被网卡配置文件覆盖。

[root@liang-00 network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 119.29.29.29
[root@liang-00 network-scripts]# 

 /etc/hosts 文件是linux和windows都有的,主机名和ip配置文件。

[root@liang-00 network-scripts]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@liang-00 network-scripts]# 

用户可以自定义ip和域名之间的映射。

 

转载于:https://my.oschina.net/u/3993922/blog/2877139

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值