12:Linux日常运维技巧-1

Linux日常运维管理技巧–1

1:使用w查看系统负载.

w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令,还有系统负载等信息。

执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。

单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

##一般用法:直接执行w命令
[root@long01 ~]# w
 19:38:50 up  6:30,  2 users,  load average: 0.00, 0.01, 0.02
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      19:38   10.00s  0.03s  0.03s -bash
root     pts/0    10.1.1.169       19:24    2.00s  0.01s  0.00s w

w命令所显示字段的含义:

字段
19:24:38表示当前系统时间
up 6:16表示系统以及运行了多少时间
1 user表示有多少用户登录到这个系
load average分别表示系统最近一分钟、五分钟、十五分钟分钟的负载
USER这一列表示在线用户的用户名。
TTY在线用户所在的终端,远程终端是pts/0 pts/1等等,本地登录的用户显示为tty1 tty2等等。
FROM表示用户登录的IP,如果是本地登录则不显示任何信息,或者显示的是主机名
LOGIN@用户登录的时间
IDLE用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置
JCPU和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间
PCPU当前进程所占用时间
WHAT当前正在运行进程的命令行

load average详解:

##第一个数字表示最近1分钟系统的负载
##第二个数字表示最近5分钟的负载
##第三个数字表示最近15分钟的负载
##实际生产环境的负载情况应该不高于服务器的逻辑CPU数量,
##最佳负载应该等于逻辑cpu数量,没有空闲,也没有压力。

##查看服务器的逻辑CPU数量,实际数量是processor最大的数字加1
[root@long01 ~]# cat /proc/cpuinfo | grep "^processor" | sort -drt " " -k3
processor   : 1
processor   : 0

w命令常用选项

h选项:不打印头信息,也就是第一行,只显示所有在线用户的信息

[root@long01 ~]# w -h
root     tty1                      19:38   23:44   0.12s  0.12s -bash
root     pts/0    10.1.1.169       19:24    0.00s  0.04s  0.00s w -h

s选项:短格式显示简短的信息:

[root@long01 ~]# w -s
 20:16:40 up  7:08,  2 users,  load average: 0.00, 0.01, 0.02
USER     TTY      FROM              IDLE WHAT
root     tty1                      25:12  -bash
root     pts/0    10.1.1.169        0.00s w -s

w相关的命令:uptime

uptime命令的结果就是w命令的第一行

[root@long01 ~]# uptime
 20:20:41 up  7:12,  2 users,  load average: 0.00, 0.01, 0.02

2:vmstat命令

vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

用法:

##直接使用:显示一次信息
[root@long01 ~]# vmstat 
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 1823464   2076 114716    0    0     5     1   26   24  0  0 100  0  0

##持续显示直到使用Ctrl+Z暂停或者Ctrl+C终止: vmstat 1
[root@long01 ~]# vmstat 1      #1代表每1秒显示一次,可以任意设置
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 1823464   2076 114716    0    0     5     1   26   24  0  0 100  0  0
 0  0      0 1823464   2076 114716    0    0     0     0   70   56  0  0 100  0  0
 0  0      0 1823464   2076 114716    0    0     0     0   48   41  0  0 100  0  0
 0  0      0 1823448   2076 114716    0    0     0     1   51   50  0  0 100  0  0
^C

##持续显示指定次数:vmstat 1 5 ;表示每1秒显示1次,显示5次后自动终止。
[root@long01 ~]# 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
 2  0      0 1823588   2076 114716    0    0     5     1   26   24  0  0 100  0  0
 0  0      0 1823572   2076 114716    0    0     0     0   72   56  0  0 100  0  0
 0  0      0 1823572   2076 114716    0    0     0     0   57   53  0  0 100  0  0
 0  0      0 1823572   2076 114716    0    0     0     0   61   54  0  0 100  0  0
 0  0      0 1823572   2076 114716    0    0     0     0   53   45  0  0 100  0  0
[root@long01 ~]# 

常用选项:

f选项:显示启动后创建的进程总数;
[root@long01 ~]# vmstat -f
         1202 forks

S选项:输出信息的单位,可以设定 k或者K  显示的是多少kb,m或者M显示的是多少M。
[root@long01 ~]# vmstat 1 5 -S  M
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   1780      2    112    0    0     4     0   26   24  0  0 100  0  0
 0  0      0   1780      2    112    0    0     0     0  108   96  0  0 100  0  0
 0  0      0   1780      2    112    0    0     0     0   87   82  0  0 100  0  0
 0  0      0   1780      2    112    0    0     0     4   88   81  0  0 100  0  0
 0  0      0   1780      2    112    0    0     0     1   91   89  0  0 100  0  0
##上面free:1700M ;buff:2M ;cache:112M

字段说明:

Procs(进程)
    r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
    b: 等待IO的进程数量。

Memory(内存)
    swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
    free: 空闲物理内存大小。
    buff: 用作缓冲的内存大小。
    cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap(交换空间)
    si: 每秒从交换区写到内存的大小,由磁盘调入内存。
    so: 每秒写入交换区的内存大小,由内存调入磁盘。
(注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。)

IO
    bi: 每秒读取的块数
    bo: 每秒写入的块数
(注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。)

system(系统)
    in: 每秒中断数,包括时钟中断。
    cs: 每秒上下文切换数。
(注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。)

CPU(以百分比表示)
    us: 用户进程执行时间百分比(user time)
    (注:us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。)
    sy: 内核系统进程执行时间百分比(system time)
    (注:sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。)
    wa: IO等待时间百分比
    (注:wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。)
    id: 空闲时间百分比

3:top命令

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

使用方法

[root@long01 ~]# top
top - 23:44:18 up  3:04,  1 user,  load average: 0.00, 0.01, 0.02
Tasks:  92 total,   1 running,  91 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2031912 total,  1822860 free,    92024 used,   117028 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1789820 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1 root      20   0  125092   3660   2520 S   0.0  0.2   0:00.49 systemd                          2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                        3 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/0 

常用选项:

d选项:可以调整top信息的刷新时间,默认为3秒

[root@long01 ~]# top -d 1  #调整top信息刷新时间为1秒。如此top显示的信息每1秒都会刷新一次。

u选项:查看某个用户的进程

[root@long01 ~]# top -u user2
top - 23:56:04 up  3:16,  2 users,  load average: 0.00, 0.01, 0.02
Tasks:  96 total,   1 running,  95 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2031912 total,  1819324 free,    95252 used,   117336 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1786392 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                       1248 user2     20   0  150868   2304    976 S   0.0  0.1   0:00.00 sshd                         1249 user2     20   0  115952   2420   1676 S   0.0  0.1   0:00.01 bash

c选项:显示完整的进程命令

[root@long01 ~]# top -c
top - 12:02:53 up 19:26,  1 user,  load average: 0.00, 0.01, 0.04
Tasks:  94 total,   1 running,  93 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2031912 total,  1612116 free,    96668 used,   323128 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1752328 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1 root      20   0   43272   3532   2328 S   0.0  0.2   0:00.70 /usr/lib/systemd/systemd --system --deserialize 13  

b选项:以批处理的模式操作, 显示全部的进程信息。

n选项:可以设置循环显示次数,刷新指定的次数后停止top命令

[root@long01 ~]# top -bn 1     #-bn 1的组合常用于脚本中,可以调取一次系统运行信息。用于分析数据,
top - 12:08:05 up 19:31,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  3.1 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2031912 total,  1612312 free,    96316 used,   323284 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1752656 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1 root      20   0   43272   3532   2328 S   0.0  0.2   0:00.70 systemd
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/0
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H

字段解释:

第一行:与w命令的第一行相同,显示的时系统当前的时间,已运行的时间,系统负载信息。
第二行:依次是:总任务数量,处于运行状态的任务数量,休眠状态的任务数量,停止状态的任务数量,僵尸进程数量
第三行:CPU信息,与vmstat显示的信息类似。最后的st意思是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比
第四行:依次是:总物理内存,空闲的内存,已使用的内存,缓冲区和缓存使用的内存。
第五行:依次是:交换分区总大小,空闲多少,已使用多少,有效的内存。

第七行:表示下面的进程信息,依次是:
     PID:进程ID
    USER:开启进程的用户,
      PR:进程的优先级
      NI:NICE值,为负值时表示高优先级,正值表示低优先级
    VIRT:进程使用的虚拟内存总量,单位为KB
     RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
     SHR:共享内存大小,单位kb
       S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    %CPU:上次更新到现在的CPU时间占用百分比
    %MEM:进程使用的物理内存百分比
   TIME+:进程使用的CPU时间总计,单位1/100秒
 COMMAND:进程名称(命令名/命令行)

top交互命令:

h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;  k pid
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
f或者F:从当前显示中添加或者删除项目;
o或者O:改变显示项目的顺序;
l:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和CPU状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc文件中。

4 sar命令

sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。

sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。

它的特点是可以连续对系统取样,获得大量的取样数据。

取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

如果提示找不到该命令,可以执行下面的命令进行安装。

[root@long01 ~]# yum install -y sysstat

命令格式:sar (选项) (参数)

sar会每十分钟记录一次系统的状态,每天会以sa和sar加上每天的日期命名,保存两个文件:

一个是/var/log/sa/saxx:xx为当天的日期。还有一个是/var/log/sa/sarxx

这些文件默认会保留一个月

[root@www ~]# ls /var/log/sa
sa01  sa04  sa07  sa10  sa14  sa17  sa20  sa23  sa26  sa29  sar01  sar04  sar07  sar11  sar14  sar17  sar20  sar23  sar26  sar29
sa02  sa05  sa08  sa12  sa15  sa18  sa21  sa24  sa27  sa30  sar02  sar05  sar08  sar12  sar15  sar18  sar21  sar24  sar27  sar30
sa03  sa06  sa09  sa13  sa16  sa19  sa22  sa25  sa28  sa31  sar03  sar06  sar09  sar13  sar16  sar19  sar22  sar25  sar28  sar31

sa开头的文件是数据文件, 需要用sar -f 命令来读取,直接cat会乱码

[root@www ~]# sar  -f /var/log/sa/sa01     #如果不指定查看的文件,那么查看的就是当天的信息。
Linux 3.10.0-693.11.1.el7.x86_64 (www)  06/01/2018  _x86_64_    (1 CPU)

12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM     all      0.15      0.00      0.10      0.00      0.00     99.75
12:20:01 AM     all      0.15      0.00      0.10      0.00      0.00     99.75
(此处省略N行。。。)

字段解释:
字段解释:
第一行显示的依次是,系统内核版本,主机名,日期,系统数据位 CPU数量
第二行为空,
第三行为字段头,表示这一列代表的数据是什么,
%user 用户空间的CPU使用
%nice 改变过优先级的进程的CPU使用率
%system 内核空间的CPU使用率
%iowait CPU等待IO的百分比 
%steal 虚拟机的虚拟机CPU使用的CPU
%idle 空闲的CPU
在以上的显示当中,主要看%iowait%idle%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。 

sar开头的文件为普通文本文件,可以直接使用cat等命令查看。

[root@www ~]# head -6 /var/log/sa/sar01
Linux 3.10.0-693.11.1.el7.x86_64 (www)  2018-06-01  _x86_64_    (1 CPU)

12:00:01 AM     CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest    %gnice     %idle
12:10:01 AM     all      0.15      0.00      0.10      0.00      0.00      0.00      0.00      0.00      0.00     99.75
12:10:01 AM       0      0.15      0.00      0.10      0.00      0.00      0.00      0.00      0.00      0.00     99.75
12:20:01 AM     all      0.15      0.00      0.10      0.00      0.00      0.00      0.00      0.00      0.00     99.75

sar -n DEV 查看网卡流量

[root@www ~]# sar -n DEV
Linux 3.10.0-693.11.1.el7.x86_64 (www)  06/10/2018  _x86_64_    (1 CPU)

12:00:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM      eth0      0.11      0.11      0.01      0.02      0.00      0.00      0.00
12:10:01 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

字段解释:
第一行显示的依次是,系统内核版本,主机名,日期,系统数据位 CPU数量
第二行为空,
第三行为字段头,表示这一列代表的数据是什么,
    12:00:01 AM :记录信息的时间
    IFACE:网卡接口
    rxpck/s:接收的数据包数量。
    txpck/s:发送的数据包数量。
    rxkB/s:接收的数据大小。
    txkB/s:发送的数据大小。
    rxcmp/s:每秒钟接收的压缩数据包
    txcmp/s:每秒钟发送的压缩数据包
    rxmcst/s:每秒钟接收的多播数据包

sar -q 查看平均负载

[root@www ~]# sar -q | head -6
Linux 3.10.0-693.11.1.el7.x86_64 (www)  06/10/2018  _x86_64_    (1 CPU)

12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
12:10:01 AM         3       183      0.00      0.01      0.05         0
12:20:01 AM         2       183      0.00      0.01      0.05         0
12:30:01 AM         2       183      0.00      0.01      0.05         0

字段解释:
    runq-sz  运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
    plist-sz 进程列表中的进程(processes)和线程数(threads)的数量
    ldavg-1 最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推
    ldavg-5 最后5分钟的CPU平均负载
    ldavg-15 最后15分钟的CPU平均负载

sar -b 磁盘读写

[root@www ~]# sar -b | head -6
Linux 3.10.0-693.11.1.el7.x86_64 (www)  06/10/2018  _x86_64_    (1 CPU)

12:00:01 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:10:01 AM      0.38      0.09      0.29      3.51      2.94
12:20:01 AM      0.12      0.00      0.12      0.00      1.21
12:30:01 AM      0.14      0.00      0.14      0.00      1.43

字段解释:
    tps  磁盘每秒钟的IO总数,等于iostat中的tps
    rtps 每秒钟从磁盘读取的IO总数
    wtps 每秒钟从写入到磁盘的IO总数
    bread/s 每秒钟从磁盘读取的块总数
    bwrtn/s 每秒钟此写入到磁盘的块总数

sar -v 进程、inode、文件和锁表状态

[root@www ~]# sar -v | head -6
Linux 3.10.0-693.11.1.el7.x86_64 (www)  06/10/2018  _x86_64_    (1 CPU)

12:00:01 AM dentunusd   file-nr  inode-nr    pty-nr
12:10:01 AM     26702      1376     32673         0
12:20:01 AM     26712      1376     32677         0
12:30:01 AM     26718      1376     32677         0

字段解释:
dentunusd 在缓冲目录条目中没有使用的条目数量
file-nr 被系统使用的文件句柄数量
inode-nr 已经使用的索引数量 
pty-nr 使用的pty数量

更多sar用法参考:https://www.cnblogs.com/howhy/p/6396437.html

5 nload命令

nload命令主要用途: 用来即时监看网路状态和各ip所使用的带宽

nload 默认分为上下两块:
上半部分是:Incoming也就是进入网卡的流量,
下半部分是:Outgoing,也就是从这块网卡出去的流量,

每部分都有下面这几个部分,看起来还是蛮直观的。
    当前流量(Curr)
    平均流量(Avg)
    最小流量(Min)
    最大流量(Max),
    流量总和(Ttl)

nload默认没有安装:yum安装前需要安装epel扩展包,然后再安装nload

[root@www ~]# yum install -y epel-release
(安装过程省略。。)
[root@www ~]# yum install -y nload

nload默认监测的是eth0网卡

[root@www ~]# nload

如果你想监测其他网卡的流量,可以使用左右按键在所有接口间切换。*或者在命令后接上网卡名。*

[root@www ~]# nload ens33

其他详细用法参考:https://linux.cn/article-2871-1.html

6 监控io性能

iostat

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,

之后运行iostat将显示自上次运行该命令以后的统计信息。

用户可以通过指定统计的次数和时间来获得所需的统计信息。

日常用法:iostat -d -k 2

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。

[root@www ~]# iostat -d -k 2
Linux 3.10.0-693.11.1.el7.x86_64 (www)  06/10/2018  _x86_64_    (1 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.25         0.57         2.69    1589753    7512964
###我的服务器只有一块vda磁盘。

字段解释:
Device:磁盘设备名。
tps:该设备每秒的传输次数,"一次传输"意思是"一次I/O请求"。
    多个逻辑请求可能会被合并为"一次I/O请求""一次传输"请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据。

[root@www ~]# iostat -d -x -k 1 10 ###1和10代表的事每一秒刷新一次,刷新10次后停止。
Linux 3.10.0-693.11.1.el7.x86_64 (www)  06/10/2018  _x86_64_    (1 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.10    0.03    0.22     0.57     2.69    25.59     0.00   14.54    4.26   15.97   0.40   0.01

字段解释:
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了
(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;
wsec/:每秒写入的扇区数。
rKB/s:The number of read requests that were issued to the device per second;
wKB/s:The number of write requests that were issued to the device per second;
avgrq-sz 平均请求扇区的大小
avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。    
await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
         这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm    表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,         系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

iostat更多详细用法参考:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858810.html

iotop

有时我们希望知道到底哪个进程产生了IO,这个时候就需要iotop这个工具了。 它的输出和top命令类似,简单直观。

首次使用iotop工具需要先进行安装:

[root@long01 ~]# yum install -y iotop

用法:直接执行,-d选项指定信息刷新的时间,单位为秒。

[root@long01 ~]# iotop -d 20

Total DISK READ :   0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:   0.00 B/s | Actual DISK WRITE:       2.90 K/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND 
    25 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:1]
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 21
     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 % -bash

这个命令主要关注的是“IO>“ 这一列,表示进程占用磁盘IO的百分比。

7 free命令

free 命令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

用法:直接执行

[root@long01 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2031912      131408       81632        8820     1818872     1685252
Swap:       2097148           0     2097148

字段解释:
Mem:这一行表示物理内存的信息
Swap:这一行表示交换区的信息。

total列:表示物理内存总大小和交换分区的总大小。
used:已使用的内存或交换分区。
free:空闲的内存或者交换分区。
shared:共享的内存
buff/cache:缓存区和缓冲区的容量大小,
    buffer:缓冲区,CPU处理好的数据如果直接写入磁盘的话太慢了,需要先存放在内存中,这个过程就叫做缓冲。
    cache:由于CPU直接到磁盘中读取数据也非常慢,所以程序需要先将磁盘中部分数据加载到内存中再让CPU进行计算,这叫做缓存。
available:可使用的内存容量大小。

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

常用选项:

-b:以Byte为单位显示内存使用情况;
[root@long01 ~]# free -b
              total        used        free      shared  buff/cache   available
Mem:     2080677888   134594560    82591744     9031680  1863491584  1725714432
Swap:    2147479552           0  2147479552

-h:易读方式显示。
[root@long01 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        128M         78M        8.6M        1.7G        1.6G
Swap:          2.0G          0B        2.0G

-k:以KB为单位显示内存使用情况;
[root@long01 ~]# free -k
              total        used        free      shared  buff/cache   available
Mem:        2031912      131340       80756        8820     1819816     1685368
Swap:       2097148           0     2097148

-m:以MB为单位显示内存使用情况;
[root@long01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1984         128          78           8        1777        1645
Swap:          2047           0        2047

-s<间隔秒数>:持续观察内存使用状况;
[root@long01 ~]# free -s 1
              total        used        free      shared  buff/cache   available
Mem:        2031912      131584       80500        8820     1819828     1685124
Swap:       2097148           0     2097148

              total        used        free      shared  buff/cache   available
Mem:        2031912      131584       80500        8820     1819828     1685124
Swap:       2097148           0     2097148

8 ps命令

ps命令用于报告当前系统的进程状态。可以搭配kell指令随时中断、删除不必要的程序。

用法:直接使用将目前属于您自己这次登入的 PID 与相关信息列示出来

[root@long01 ~]# ps -l ###-l选项显示更详细的信息
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0    992    988  0  80   0 - 28848 do_wai pts/0    00:00:00 bash
0 R     0   1020    992  0  80   0 - 37235 -      pts/0    00:00:00 ps
[root@long01 ~]# ps 
   PID TTY          TIME CMD
   992 pts/0    00:00:00 bash
  1021 pts/0    00:00:00 ps

字段解释:
    F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
    S 代表这个程序的状态 (STAT);
    UID 代表执行者身份
    PID 进程的ID号!
    PPID 父进程的IDC CPU使用的资源百分比
    PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;
    NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
    ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
    SZ 使用掉的内存大小;
    WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
    TTY 登入者的终端机位置;
    TIME 使用掉的 CPU 时间。
    CMD 所下达的指令名称

列出目前所有的进程:

[root@long01 ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193700  6820 ?        Ss   21:10   0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2  0.0  0.0      0     0 ?        S    21:10   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    21:10   0:00 [ksoftirqd/0]
(省略n行。。。)

字段解释:
USER:该进程属于那个使用者账号。
PID :该进程的进程ID号。
%CPU:该进程使用掉的 CPU 资源百分比;
%MEM:该进程所占用的物理内存百分比;
VSZ :该进程使用掉的虚拟内存量 (Kbytes)
RSS :该进程占用的固定的内存量 (Kbytes)
TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。
     另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有:
     D 不能中断的进程 
     R run状态的进程
     S sleep状态的进程
     T 暂停的进程
     Z 僵尸进程
     < 高优先级进程
     N 低优先级进程
     L 内存中被锁了内存分页
     s 主进程
     l 多线程进程
     + 前台进程
START:该进程被触发启动的时间;
TIME :该进程实际使用 CPU 运作的时间。
COMMAND:该程序的实际指令。

9 查看网络状态

netstat命令

netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

可用选项:

-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@long01 ~]# 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:22              0.0.0.0:*               LISTEN      879/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      975/master
tcp6       0      0 :::22                   :::*                    LISTEN      879/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      975/master
udp        0      0 127.0.0.1:323           0.0.0.0:*                           554/chronyd
udp6       0      0 ::1:323                 :::*                                554/chronyd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     1582     1/systemd            /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     19383    975/master           private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     19386    975/master           private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     19389    975/master           private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     19392    975/master           private/defer
(省略N行。。。)
从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,
其中"Recv-Q""Send-Q"指%0A的是接收队列和发送队列。
这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

netstat -an 查看系统的网络连接状况

[root@long01 ~]# 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:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 10.1.1.25:22            10.1.1.169:51625        ESTABLISHED
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      [ ]         DGRAM                    1562     /run/systemd/notify
unix  2      [ ]         DGRAM                    1564     /run/systemd/cgroups-agent
unix  2      [ ]         DGRAM                    16672    /var/run/chrony/chronyd.sock
unix  2      [ ACC ]     STREAM     LISTENING     1582     /run/systemd/journal/stdout
(省略N行。。)

##关于STATE列各个状态的一个简要说明:
LISTEN:侦听并等待对端的TCP连接请求
SYN-SENT:发送SYN连接请求后,等待对端回复SYN请求
SYN-RECEIVED:收到来自对端的SYN请求,并回复SYN请求后,等待对端响应SYN请求的ACK消息
ESTABLISHED:代表连接建立,双方在这个状态下进行TCP数据交互
FIN-WAIT-1:发送FIN关闭连接请求后,等待对方响应FINACK消息或者对端的FIN关闭请求
FIN-WAIT-2:等待对方FIN关闭请求
CLOSE-WAIT:等待本地用户(进程)发送FIN关闭请求给对端
CLOSING:当双方同时发送FIN关闭请求时,会进入CLOSING状态,等待对端发送FIN报文的响应ACK消息
LAST-ACK:收到对端FIN请求后,回复ACKFIN并等待对方回复FIN的响应ACK消息,此时进入此状态
TIME-WAIT:该状态是为了确保对端收到了FIN请求的ACK响应,默认会等待两倍MSL时长(MSLMaximum Segment Lifetime,即报文最大生存时间,超过这个时间的报文会被丢弃)

netstat -lntp 只看出tcp的,不包含socket

[root@long01 ~]# 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:22              0.0.0.0:*               LISTEN      879/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      975/master
tcp6       0      0 :::22                   :::*                    LISTEN      879/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      975/master

ss和nestat异曲同工,只是显示的信息不如netstat详细。

[root@long01 ~]# ss -ta
State      Recv-Q Send-Q Local Address:Port                  Peer Address:Port                
LISTEN     0      128                *:ssh                              *:*                    
LISTEN     0      100        127.0.0.1:smtp                             *:*                    
ESTAB      0      52         10.1.1.25:ssh                     10.1.1.169:51625                
LISTEN     0      128               :::ssh                             :::*                    
LISTEN     0      100              ::1:smtp                            :::* 

[root@long01 ~]# ss -atn   ##-n选项可以将端口协议显示为端口号。
State      Recv-Q Send-Q   Local Address:Port                  Peer Address:Port              
LISTEN     0      128                  *:22                               *:*                  
LISTEN     0      100          127.0.0.1:25                               *:*                  
ESTAB      0      52           10.1.1.25:22                      10.1.1.169:51625              
LISTEN     0      128                 :::22                              :::*                  
LISTEN     0      100                ::1:25                              :::* 

小技巧: netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,”\t”,sta[key]}’

这条命令可以统计出各个状态下的tcp链接的数量。

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

10 linux下抓包

tcpdump

tcpdump命令是一款抓包工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。

tcpdump工具需要自行安装:

[root@long01 ~]# yum install -y tcpdump

格式: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将监视第一个网络接口上所有流过的数据包

tcpdump默认监控的是eth0端口,由于我这里的网卡名是ens33所以需要使用-i选项指定监听的网卡
[root@long01 ~]# tcpdump -nni ens33     
22:16:36.031834 IP 10.1.1.25.22 > 10.1.1.169.51625: Flags [P.], seq 57044:57208, ack 1, win 274, length 164
22:16:36.077590 IP 10.1.1.169.51625 > 10.1.1.25.22: Flags [P.], seq 1:53, ack 57044, win 2053, length 52
(此处省略N行)。
^C
406 packets captured
406 packets received by filter
0 packets dropped by kernel

一条信息表示的依次是:时间,IPIP.端口 > 目标IP.端口 数据包标签[],数据包类型、长度等信息。
##-nn选项的作用是IP的端口都以数字的形式显示。不使用-nn选项的话有些时候会显示协议名等信息。
##tcpdump默认会一直抓包,知道按Ctrl+C终止抓包。

监视指定端口的数据包

[root@long01 ~]# tcpdump -nni ens33 port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
23:01:31.055177 IP 10.1.1.169.61714 > 183.61.83.225.80: Flags [S], seq 2508788990, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
23:01:31.094872 IP 183.61.83.225.80 > 10.1.1.169.61714: Flags [S.], seq 3687868093, ack 2508788991, win 14600, options [mss 1420,nop,nop,sackOK,nop,wscale 9], length 0

监视端口不是22和ip不是10.1.1.1的数据包:

[root@long01 ~]# tcpdump -nn -i ens33 not port 22 and not  host 10.1.1.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
23:05:51.871825 IP 10.1.1.169.61745 > 183.61.83.225.80: Flags [S], seq 2512730790, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
23:05:51.910597 IP 183.61.83.225.80 > 10.1.1.169.61745: Flags [S.], seq 2995415503, ack 2512730791, win 14600, options [mss 1420,nop,nop,sackOK,nop,wscale 9], length 0
23:05:51.910602 IP 10.1.1.169.61745 > 183.61.83.225.80: Flags [.], ack 1, win 260, length 0

抓取100个数据包然后将数据包保存到data.cab 文件中

[root@long01 ~]# tcpdump -nni ens33 -c 100 -w data.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
100 packets captured
100 packets received by filter
0 packets dropped by kernel

#这样抓取到的数据包只能使用tcpdump -r选项来读取, 直接cat的话就是乱码。
[root@long01 ~]# tcpdump -r data.cap 
reading from file data.cap, link-type EN10MB (Ethernet)
23:19:11.281776 IP long01.ssh > 10.1.1.169.61711: Flags [P.], seq 4277860660:4277860808, ack 3580160994, win 251, length 148
23:19:11.281872 IP 10.1.1.169.61711 > long01.ssh: Flags [.], ack 148, win 2050, length 0
23:19:13.883733 IP 10.1.1.169.51427 > 239.255.255.250.ssdp: UDP, length 137
(此处省略N行。。)

tshark

tshark是另外一个和tcpdump相似的工具:

tshark命令需要先安装wireshark包才能使用。
[root@www ~]# yum install -y wireshark

案例:通过tshark抓取web服务的访问日志。
[root@www ~]# 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: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
"Jun 10, 2018 23:52:23.476398708 CST"   222.209.152.12  blog.deaoza.cn  GET /
"Jun 10, 2018 23:52:26.012348996 CST"   222.209.152.12  blog.deaoza.cn  GET /
"Jun 10, 2018 23:52:27.461011485 CST"   111.255.194.27      GET /
"Jun 10, 2018 23:52:35.721419187 CST"   222.209.152.12  blog.deaoza.cn  GET /
^C4 packets captured

11 Linux网络相关

ifconfig查看网卡ip

如果提示ifconfig命令不存在需要安装net-tools才能使用:

[root@www ~]# yum install -y  net-tools

[root@www ~]# ifconfig eth0        #带网卡名可以查看指定网卡的信息,不指定网卡名会列出所有网卡的信息。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.144.188  netmask 255.255.240.0  broadcast 172.18.159.255
        ether 00:16:3e:02:ab:ef  txqueuelen 1000  (Ethernet)
        RX packets 658723  bytes 422204534 (402.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 502257  bytes 139548559 (133.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

关闭、启动网卡

(注:如果是远程连接的话,关闭和启动网卡的操作必须同时执行,否则会导致无法再远程连接上。

ifdown eth0&&ifup eth0

[root@www ~]# ifdown eth0&&ifup eth0

Determining IP information for eth0... done.
[root@www ~]# 

设定虚拟网卡

有时候需要给服务器增加一个IP。就可以通过添加虚拟网卡的方式增加一个IP

首先进入网卡配置目录

[root@long01 ~]# cd /etc/sysconfig/network-scripts/
[root@long01 network-scripts]# pwd
/etc/sysconfig/network-scripts

复制一份网卡配置文件

[root@long01 network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:0
[root@long01 network-scripts]# ls -dl ./ifcfg-ens33*
-rw-r--r--. 1 root root 223 5月  13 20:32 ./ifcfg-ens33
-rw-r--r--. 1 root root 223 6月  11 00:09 ./ifcfg-ens33:0

修改ifcfg-ens33:0配置文件,

将NAME和DEVICE改为ens33:0,
IPADDR修改为要添加的IP:我这里为10.1.1.100,根据自己情况来修改。
再将DNS删除

##检查修改结果。
[root@long01 network-scripts]# grep -E "NAME|IPADDR|DNS|DEVICE" ifcfg-ens33:0
NAME=ens33:0
DEVICE=ens33:0
IPADDR=10.1.1.100
[root@long01 network-scripts]# 

重启ens33网卡后检查ens33:0网卡是否添加成功

[root@long01 network-scripts]# ifdown ens33 && ifup ens33
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)

[root@long01 network-scripts]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.1.100  netmask 255.255.255.0  broadcast 10.1.1.255
        ether 00:0c:29:d3:3e:41  txqueuelen 1000  (Ethernet)

从宿主机CMD检查是否能ping通10.1.1.100

C:\Users\LongGe>ping 10.1.1.100

正在 Ping 10.1.1.100 具有 32 字节的数据:
来自 10.1.1.100 的回复: 字节=32 时间<1ms TTL=64
来自 10.1.1.100 的回复: 字节=32 时间<1ms TTL=64
来自 10.1.1.100 的回复: 字节=32 时间<1ms TTL=64
来自 10.1.1.100 的回复: 字节=32 时间<1ms TTL=64

10.1.1.100Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

查看网卡是否连接

mii-tool ens33 查看网卡是否连接

[root@long01 network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok  #显示link ok 就是已连接

ethtool ens33 也可以查看网卡是否连接,并显示更为详细的信息。

[root@long01 network-scripts]# ethtool ens33
Settings for ens33:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

更改主机名

主机名配置文件:/etc/hostname,修改主机名可以通过修改这个文件来实现。

[root@long01 ~]# sed -i 's/.*/long001/g' /etc/hostname
[root@long01 ~]# cat /etc/hostname 
long001
通过修改hostname文件修改主机名后需要重启系统才会生效
[root@long001 ~]# hostname
long001

或者使用命令:hostnamectl set-hostname 来实现修改主机名。

[root@long001 ~]# hostnamectl set-hostname long0000
[root@long001 ~]# 登出
重新登录后就会生效。
[root@long0000 ~]# hostname
long0000

DNS配置

DNS一般是在网卡配置文件里设置,

如果需要临时添加一个DNS,可以在/etc/resolv.conf文件中添加,

[root@long0000 ~]# echo "nameserver 8.8.8.8" >> /etc/resolv.conf 
[root@long0000 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5
nameserver 61.139.2.69
nameserver 8.8.8.8

在CentOS7中,这个文件中添加的DNS会在重启网卡的时候被覆盖。

[root@long0000 ~]# ifdown ens33 && ifup ens33
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@long0000 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5
nameserver 61.139.2.69

hosts文件

/etc/hosts文件与Windows中的hosts文件一样,可以将一个多个域名指向一个IP,类似于DNS的功能。

[root@long0000 ~]# echo "10.1.1.169 www.test1.com" >> /etc/hosts
[root@long0000 ~]# ping www.test1.com
PING www.test1.com (10.1.1.169) 56(84) bytes of data.
64 bytes from www.test1.com (10.1.1.169): icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from www.test1.com (10.1.1.169): icmp_seq=2 ttl=64 time=0.388 ms
64 bytes from www.test1.com (10.1.1.169): icmp_seq=3 ttl=64 time=0.175 ms
64 bytes from www.test1.com (10.1.1.169): icmp_seq=4 ttl=64 time=0.234 ms
^C
--- www.test1.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.173/0.242/0.388/0.088 ms

扩展

tcp三次握手四次挥手(重点) http://www.doc88.com/p-9913773324388.html

tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值