Linux日常运维(一)

10.1 监控系统的状态

查看当前系统的负载:w、uptime

[root@localhost ~]# w
 10:42:38 up 7 min,  1 user,  load average: 0.16, 0.08, 0.06
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.100.1    10:36    6.00s  0.04s  0.02s w

命令 w 查看的是系统整体上的负载
上面
第1行从左到右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载
第2行显示的是当前登录的用户及其登录地址等

uptime命令也可以显示上面第1行的内容:

[root@localhost ~]# uptime
 11:30:06 up 54 min,  1 user,  load average: 0.00, 0.01, 0.05

重点关注load average
第1个数值表示1分钟内系统的平均负载值(该值越大说明服务器压力越大)
第2个数值表示5分钟内系统的平均负载值
第3个数值表示15分钟内系统的平均负载值

一般情况下,第1个值不超过服务器的CPU数量就没问题。查看服务器的CPU数量:

[root@localhost ~]# cat /proc/cpuinfo

也可以这样查看:

[root@localhost ~]# grep -c 'precessor' /proc/cpuinfo
0

在linux中,服务器有2*n个CPU(n为单颗物理CPU上有n核)。如果n是4,则查看 /proc/cpuinfo 这个文件会显示8段类似信息,最后一段的processor:后面会显示为7。

监控系统的状态:vmstat

[root@localhost ~]# 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 1556704   2076 168336    0    0    12     1   20   16  0  0 100  0  0

vmstat 命令显示的结果分为6部分:procs、memory、swap、io、system和cpu

procs–显示进程的相关信息
r(run):表示运行或等待CPU时间片的进程数
b(block):表示等待资源的进程数,资源指的是I/O、内存等

memory–显示内存的相关信息
swpd:表示切换到交换分区中的内存数量,单位为KB,该值波动时说明内存不足
free:表示当前空闲的内存数量,单位为KB
buff:表示(即将写入磁盘的)缓冲大小,单位为KB
cache:表示(从磁盘读取的)缓存大小,单位为KB

swap–显示内存的交换情况
si:表示由交换区写入内存的数据量,单位为KB
so:表示由内存写入交换区的数据量,单位为KB

io–显示内存的交换情况
bi:表示从块设备读取数据的量(磁盘→内存),单位为KB
bo:表示从块设备写入数据的量(内存→磁盘),单位为KB

扫描二维码关注公众号,回复: 1619182 查看本文章

system–显示采集间隔内发生的中断次数
in:表示在某一时间间隔内观测到的每秒设备的中断次数
cd:表示每秒产生的上下文切换次数

cpu–显示CPU的使用状态
us:表示用户下所花费CPU的时间百分比(通常us<=10比较合适)
sy:表示系统花费CPU的时间百分比(sy与us呈正相关)
id:表示CPU处于空闲状态的时间百分比
wa:表示I/O等待所占用CPU的时间百分比
st:表示被偷走的CPU所占的时间百分比(一般为0)
us + sy + id = 100%

一般关注r、b、si、so、bi、bo、us和wa这几列信息

vmstat n m 表示动态输出,每n秒输出一次,共输出m次

[root@localhost ~]# 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 1556356   2076 168376    0    0     6     0   13   11  0  0 100  0  0
 0  0      0 1556356   2076 168376    0    0     0     0   84   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   81   70  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   62   55  0  0 100  0  0
 1  0      0 1556340   2076 168376    0    0     0     0   80   73  0  0 100  0  0

vmstat 1 5 表示每1秒输出一次,共输出5次

[root@localhost ~]# 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
 1  0      0 1556340   2076 168376    0    0     6     0   13   11  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   85   69  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   68   60  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   60   54  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   77   68  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   67   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   69   62  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   73   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   67   62  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   73   68  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   67   60  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   60   53  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   69   62  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   68   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   72   63  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0    48   44   40  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   29   22  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   41   29  0  0 100  0  0
^Z
[1]+  已停止               vmstat 1

vmstat 1 表示每1秒输出一次,且一直输出,除非按Ctrl+Z中止或Ctrl+C结束

显示进程所占用的系统资源:top/htop

top

top命令用于动态监控进程所占的系统资源,每隔三秒刷新一次,默认把占用系统资源(CPU、内存、磁盘I/O等)最高的进程放在最上面。

top - 14:17:19 up  3:41,  1 user,  load average: 0.00, 0.02, 0.05
Tasks: 113 total,   2 running, 111 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 :  1865308 total,  1370480 free,   139216 used,   355612 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1532752 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                          
  1811 root      20   0  161944   2200   1548 R   0.3  0.1   0:00.10 top                                              
     1 root      20   0  193492   6592   4128 S   0.0  0.4   0:01.99 systemd                                          
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd                                         
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.03 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.61 kworker/u256:0                                   
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.37 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:00.48 rcu_sched                                        
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                    
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.08 watchdog/0                                       
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.08 watchdog/1                                       
    13 root      rt   0       0      0      0 S   0.0  0.0   0:00.31 migration/1                                      
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.03 ksoftirqd/1                                      
    15 root      20   0       0      0      0 S   0.0  0.0   0:00.34 kworker/1:0                                      
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                     
    17 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 watchdog/2               

top 查看进程使用资源情况
top -c 显示详细的进程信息
top -bn1 静态显示所有进程

[root@localhost ~]# top -bn1 -c |head -15
top - 14:24:49 up  3:49,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 114 total,   1 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.6 sy,  0.0 ni, 98.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1865308 total,  1369280 free,   140300 used,   355728 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1531624 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  1823 root      20   0  161868   2168   1600 R   6.2  0.1   0:00.01 top -bn1 -c
     1 root      20   0  193492   6592   4128 S   0.0  0.4   0:02.04 /usr/lib/systemd/systemd --switched-root --syste+
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 [kthreadd]
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.04 [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.62 [kworker/u256:0]
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.37 [migration/0]
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]

q 退出top
数字1 显示所有核CPU
M 按内存使用从高到低排序
P 按CPU使用从高到低排序

htop

top只支持键盘操作,显示单调,htop是Linux系统下一个基本文本模式的、交互式的进程查看器,主要用于控制台或shell中,可以替代top,是top的高级版本。

htop命令优点:
1. 快速查看关键性能统计数据,如CPU(多核布局)、内存/交换使用;
2. 可以横向或纵向滚动浏览进程列表,以查看所有的进程和完整的命令行;
3. 杀掉进程时可以直接选择而不需要输入进程号;
4. 通过鼠标操作条目;
5. 比top启动得更快。

上面左上角显示CPU、内存、交换区的使用情况,右边显示任务、负载、开机时间,下面就是进程实时状况。

安装hotp:yum install -y htop

下面是 F1~F10 的功能和对应的字母快捷键:
F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop

参数:
-C –no-color        使用一个单色的配色方案
-d –delay=DELAY     设置延迟更新时间,单位秒
-h –help          显示htop 命令帮助信息
-u –user=USERNAME   只显示一个给定的用户的过程
-p –pid=PID,PID…    只显示给定的PIDs
-s –sort-key COLUMN  依此列来排序
-v –version        显示版本信息

交互式命令(INTERACTIVE COMMANDS):
上下键或PgUP、PgDn 选定想要的进程,左右键或Home, End 移动字段,当然也可以直接用鼠标选定进程;
Space 标记/取消标记一个进程。命令可以作用于多个进程,例如 “kill”,将应用于所有已标记的进程
U 取消标记所有进程
s 选择某一进程,按s:用strace追踪进程的系统调用
l 显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件(小写l)
I 倒转排序顺序,如果排序是正序的,则反转成倒序的,反之亦然(大写i)
+, - 在树形模式下,展开或折叠子树
a (在有多处理器的机器上) 设置 CPU affinity: 标记一个进程允许使用哪些CPU
u 显示特定用户进程
M 按Memory 使用排序
P 按CPU 使用排序
T 按Time+ 使用排序
F 跟踪进程: 如果排序顺序引起选定的进程在列表上到处移动,让选定条跟随该进程。这对监视一个进程非常有用:通过这种方式,你可以让一个进程在屏幕上一直可见。使用方向键会停止该功能。
K 显示/隐藏内核线程
H 显示/隐藏用户线程
Ctrl-L 刷新

监控系统状态:sar

sar 命令可以监控平均负载、网卡流量、磁盘状态、内存使用等系统状态,可以显示历史信息,可以显示当天从零时开始到当前时刻的系统状态信息,每10分钟记录一次。

安装sar:yum isntall -y sysstat

初次使用sar会报错,因为sar还没有生成相应的数据库文件,它的数据库文件保存在 /var/log/sa目录下

[root@localhost ~]# sar
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain)     20180609日     _x86_64_    (4 CPU)

103541秒       LINUX RESTART

104001秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
105001all      0.00      0.00      0.01      0.00      0.00     99.99
110001all      0.00      0.00      0.01      0.00      0.00     99.99
111001all      0.00      0.00      0.03      0.05      0.00     99.92
112001all      0.00      0.00      0.01      0.00      0.00     99.98
113001all      0.00      0.00      0.01      0.00      0.00     99.99
114001all      0.00      0.00      0.01      0.01      0.00     99.98
115001all      0.00      0.00      0.01      0.00      0.00     99.99
120001all      0.00      0.00      0.01      0.00      0.00     99.99
121001all      0.00      0.00      0.01      0.00      0.00     99.98
122001all      0.00      0.00      0.02      0.00      0.00     99.98
123001all      0.00      0.00      0.02      0.00      0.00     99.98
124001all      0.00      0.00      0.02      0.00      0.00     99.98
125001all      0.00      0.00      0.01      0.00      0.00     99.98
130001all      0.00      0.00      0.02      0.00      0.00     99.98
131001all      0.00      0.00      0.02      0.00      0.00     99.98
132001all      0.00      0.00      0.02      0.00      0.00     99.98
133001all      0.00      0.00      0.02      0.00      0.00     99.98
134001all      0.01      0.00      0.02      0.00      0.00     99.97
135001all      0.00      0.00      0.02      0.00      0.00     99.98
140001all      0.01      0.00      0.02      0.00      0.00     99.97
141001all      0.00      0.00      0.01      0.00      0.00     99.98
142001all      0.10      0.00      0.22      0.28      0.00     99.41

142001秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
143001all      0.00      0.00      0.01      0.01      0.00     99.98
144001all      0.01      0.00      0.04      0.00      0.00     99.94
145001all      0.01      0.00      0.06      0.00      0.00     99.93
平均时间:     all      0.01      0.00      0.03      0.01      0.00     99.95

查看网卡流量:sar -n DEV

[root@localhost ~]# sar -n DEV |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain)     20180609日     _x86_64_    (4 CPU)

103541秒       LINUX RESTART

104001秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
105001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
105001秒     ens33      0.12      0.12      0.01      0.01      0.00      0.00      0.00
110001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
110001秒     ens33      0.09      0.11      0.01      0.01      0.00      0.00      0.00
111001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
111001秒     ens33      0.38      0.26      0.03      0.03      0.00      0.00      0.00
112001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
112001秒     ens33      0.15      0.12      0.01      0.01      0.00      0.00      0.00
113001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
113001秒     ens33      0.06      0.07      0.00      0.00      0.00      0.00      0.00

IFACE 这一列表示设备名称
rxpck/s 这一列表示每秒进入收取的包的数量
txpck/s 这一列表示每秒发送出去的包的数量
rxKB/s 这一列表示每秒收取的数据量(单位为KB)
txKB/s 这一列表示每秒发送的数据量(单位为KB)

[root@localhost ~]# sar -n DEV -f /var/log/sa/sa09 |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain)     20180609日     _x86_64_    (4 CPU)

103541秒       LINUX RESTART

104001秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
105001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
105001秒     ens33      0.12      0.12      0.01      0.01      0.00      0.00      0.00
110001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
110001秒     ens33      0.09      0.11      0.01      0.01      0.00      0.00      0.00
111001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
111001秒     ens33      0.38      0.26      0.03      0.03      0.00      0.00      0.00
112001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
112001秒     ens33      0.15      0.12      0.01      0.01      0.00      0.00      0.00
113001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
113001秒     ens33      0.06      0.07      0.00      0.00      0.00      0.00      0.00

使用 -f 选项可以查看某一天的网卡流量历史,后面跟文件名(以sa开头的文件,不能直接cat),sar的库文件在/var/log/sa目录下,还有sar开头的文件,可以直接cat

查看历史负载:sar -q

[root@localhost ~]# sar -q |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain)     20180609日     _x86_64_    (4 CPU)

103541秒       LINUX RESTART

104001秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
1050010       130      0.00      0.02      0.05         0
1100010       129      0.00      0.01      0.05         0
1110010       131      0.01      0.02      0.05         0
1120010       130      0.00      0.01      0.05         0
1130010       129      0.00      0.01      0.05         0
1140010       130      0.00      0.01      0.05         0
1150010       130      0.00      0.01      0.05         0
1200010       129      0.00      0.01      0.05         0
1210010       131      0.00      0.01      0.05         0
1220010       131      0.00      0.01      0.05         0

查看磁盘使用:sar -b

[root@localhost ~]# sar -b |head -15
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain)     20180609日     _x86_64_    (4 CPU)

103541秒       LINUX RESTART

104001秒       tps      rtps      wtps   bread/s   bwrtn/s
1050010.05      0.00      0.05      0.12      0.54
1100010.06      0.02      0.04      0.59      0.57
1110010.88      0.48      0.40     14.22      9.21
1120010.04      0.00      0.03      0.11      0.36
1130010.05      0.00      0.05      0.00      0.47
1140010.05      0.00      0.05      0.04      0.70
1150010.06      0.00      0.06      0.00      0.70
1200010.02      0.00      0.02      0.00      0.29
1210010.07      0.00      0.07      0.00      0.84
1220010.04      0.00      0.04      0.00      0.40

查看网卡流量:nload

sar虽然可以查看网卡流量,但不够直观,而nload非常直观

安装nload:yum install -y epel-release;yum install -y nload

nload 动态显示,按向右箭头可以其它网卡的网络流量
输出结果分为两个部分,Incoming为进入网卡的流量,Outgoing为网卡出去的流量,一般关注Curr那行数据,其单位也可以动态自动调整

监控I/O性能:iostat、iotop

iostat -x和iotop 都可以查看磁盘使用情况

[root@localhost ~]# iostat -x
Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain)     201806月09日     _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.04    0.04    0.00   99.91

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.42    0.12    13.15     4.38    65.53     0.01   13.35   10.98   21.69   4.82   0.26
scd0              0.00     0.00    0.00    0.00     0.06     0.00   114.22     0.00   43.78   43.78    0.00  43.22   0.00

iostat为静态显示

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   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND 
        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]
     3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     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/u256: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-drain]
    11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/1]
    13 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
    14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
    15 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0]
    16 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0H]

iotop类似于top,可以动态显示某个进程使用磁盘的状况

查看内存使用状况:free

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

[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1865308      139724     1369236        9692      356348     1532092
Swap:       4194300           0     4194300

total:内存总大小
used:真正使用的内存大小
free:剩余物理内存大小
shared:共享内存大小
buff/cache:分配给buffer和cache的内存,即缓冲/缓存(数据经过CPU计算,即将写入磁盘,用到的内存为buffer;CPU要计算时,需要把数据从磁盘中读出来,临时放入内存中,用到的内存是cache
available:系统可使用的内存大小,包含free和buffer/cache剩余部分
total = used + free + buff/cache

free命令可以加 -m和-g选项,分别以MB和GB为单位显示内存的使用状况,也支持-h选项

查看系统进程:ps

ps 命令专门查看系统进程

[root@localhost ~]# ps
   PID TTY          TIME CMD
  1253 pts/0    00:00:00 bash
  1939 pts/0    00:00:00 ps

ps不加参数时无法显示详细的进程信息

[root@localhost ~]# ps aux |head -15
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193492  6592 ?        Ss   10:35   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    10:35   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    10:35   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   10:35   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    10:35   0:00 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    10:35   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    10:35   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    10:35   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   10:35   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    10:35   0:00 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S    10:35   0:00 [watchdog/1]
root         13  0.0  0.0      0     0 ?        S    10:35   0:00 [migration/1]
root         14  0.0  0.0      0     0 ?        S    10:35   0:00 [ksoftirqd/1]
root         15  0.0  0.0      0     0 ?        S    10:35   0:00 [kworker/1:0]

ps aux 显示进程信息非常详细(ps -elf 作用与ps aux类似)
- PID 表示进程的ID,kill使用时后面需要跟上PID
- STAT 进程的状态,主要有以下几种:
- D 不能中断进程(通常为IO)
- R(run) 正在运行中的进程
- S(sleep)已经中断的进程
- Z 僵尸进程,杀不掉、打不死的进程(主进程意外丢失)
- < 高优先级进程
- N 低优先级进程
- s 主进程
- l 多线程进程
- + 在前台运行的进程

[root@localhost ~]# ps aux |grep sshd
root        923  0.0  0.2 112796  4296 ?        Ss   10:36   0:00 /usr/sbin/sshd -D
root       1249  0.0  0.2 158800  5540 ?        Ss   10:36   0:00 sshd: root@pts/0
root       1974  0.0  0.0 112724   984 pts/0    S+   16:02   0:00 grep --color=auto sshd

ps连同管道符一起使用,可以查看某个进程或它的数量(grep -c)

查看网络状况:netstat

netstat 命令用来查看网络连接状况、系统所开放端口、路由表等信息
常用用法:netstat -lnp 、netstat -an

[root@localhost ~]# netstat -lnp |head -15
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      923/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1152/master         
tcp6       0      0 :::22                   :::*                    LISTEN      923/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1152/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           571/chronyd         
udp6       0      0 ::1:323                 :::*                                571/chronyd         
raw6       0      0 :::58                   :::*                    7           595/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     19801    1152/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     19804    1152/master          private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     19807    1152/master          private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     19810    1152/master          private/defer

netstat -lnp 查看当前系统启动了哪些端口(netstat -ltnp 查看tcp端口;netstat -lunp 查看udp端口)

[root@localhost ~]# netstat -an |head -20
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 192.168.100.128:22      192.168.100.1:51990     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                 :::*                               
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     19801    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     19804    private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     19807    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     19810    private/defer
unix  2      [ ACC ]     STREAM     LISTENING     19852    private/discard
unix  2      [ ACC ]     STREAM     LISTENING     19858    private/virtual
unix  2      [ ACC ]     STREAM     LISTENING     17445    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     19813    private/trace

netstat -an 显示网络连接状况
重要:netstat -an |awk ‘/^tcp/{+=sta[$NF]}END{for(key in sta) print key,”\t”,sta[key]}’ 查看tcp每一种状态出现的数量
ss -an (与netstat作用类似)


10.2 抓包工具

当初步判定服务器上有流量攻击时,使用抓包工具来抓取数据包可以知道的IP

tcpdump 工具:tcpdump -nn

安装tcpdump:yum install -y tcpdump
tcpdump 命令:
-nn 作用是让第3列和第4列显示成“ip+端口号”的形式,不加-nn则显示“主机名+服务名”
tcpdump -nn
-i 指定设备名称
-c 指定抓包数量,抓够了自动退出
tcpdump -nn -i 设备名(not)port 指定端口
-w 指定保存位置
-r 读取抓到的包内容
tcp 指定抓tcp的包

[root@localhost ~]# tcpdump -nn -i ens33  -c 10
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
16:29:43.007506 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1203060315:1203060527, ack 4165463380, win 251, length 212
16:29:43.008347 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 212:408, ack 1, win 251, length 196
16:29:43.008424 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 408:572, ack 1, win 251, length 164
16:29:43.008491 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 572:736, ack 1, win 251, length 164
16:29:43.008555 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 736:900, ack 1, win 251, length 164
16:29:43.008620 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 900:1064, ack 1, win 251, length 164
16:29:43.008684 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1064:1244, ack 1, win 251, length 180
16:29:43.008747 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1244:1424, ack 1, win 251, length 180
16:29:43.008823 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1424:1604, ack 1, win 251, length 180
16:29:43.009124 IP 192.168.100.1.51990 > 192.168.100.128.22: Flags [.], ack 1604, win 2053, length 0
10 packets captured
11 packets received by filter
0 packets dropped by kernel

wireshark工具:tshark

安装tshark:yum install -y wireshark
tshark命令:
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” 用于web服务器抓包


10.3 Linux网络相关

查看网卡IP:ifconfig、ip addr

ifconfig 命令类似于Windows的ipconfig命令,后面不跟任何选项和参数时,只显示当前网卡IP的相关信息(如子网掩码、网关等)
安装ifconfig:yum install -y net-tools
ifconfig 查看网卡ip
设置(修改)ip:vim /etc/sysconfig/network_scripts/ifcfg-ens33(这里以ens33为网卡名为例)

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.128  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::b76:caa8:3d7c:71bc  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e4:fc:a5  txqueuelen 1000  (Ethernet)
        RX packets 12004  bytes 6150452 (5.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16570  bytes 4217661 (4.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 78  bytes 6856 (6.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78  bytes 6856 (6.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifdown 关闭网卡
ifup 启动网卡
重启网卡:
ifdown 网卡名;ifup 网卡名(远程时这样无法重启,会断开)
可以这样重启:ifdown ens33 && ifup ens33
或者:systemctl restart network

给一个网卡设定多个IP(虚拟网卡):vim ifcfg-ens:1

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:1
[root@localhost network-scripts]# vim ifcfg-ens33\:1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:1
UUID=d71e4905-fa6f-4d09-8533-714dfb0b9e5d
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.100.130
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=8.8.8.8
DNS2=4.2.2.2
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.128  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::b76:caa8:3d7c:71bc  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e4:fc:a5  txqueuelen 1000  (Ethernet)
        RX packets 12802  bytes 6219046 (5.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17083  bytes 4281925 (4.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.130  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 00:0c:29:e4:fc:a5  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 90  bytes 7912 (7.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 90  bytes 7912 (7.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

**vim ifcfg-ens:1(加转义字符\给:转义)时,需要修改NAME、DEVICE、IPADDR,设置完重启网卡
(上面NAME=ENS33:1;DEVICE=ens33:1;IPADDR=192.168.100.130)**

查看网卡连接状态:mii-tool、ethtool

mii-tool 查看网卡是否连接

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

ethtool 查看网卡状态

[root@localhost 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
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    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

更改主机名:hostname、hostnamectl set-hostname

更改主机名:
hostname(重启后失效)
hostnamectl set-hostname(重启后不变)

设置DNS:vim /etc/hosts

设置DNS:
vi /etc/resolv.conf (临时修改)
修改网卡配置文件(永久修改)

vi /etc/hosts 临时解析某个域名:
1. 一个ip可以对应多个域名,反之不行
2. 每一行只能有1个IP
3. 出现多个相同域名时,按最前面出现的记录来解析

更多资料参考:
TCP三次握手四次挥手
tshark的几个用法

猜你喜欢

转载自blog.csdn.net/miss1181248983/article/details/80634490