AI智能
改变未来

Linux日常运维(一)

10.1 监控系统的状态

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

w命令查看的是系统整体上的负载。

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

上面,

第1行从左到右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载;
第2行显示的是当前登录的用户及其登录地址等。

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

# 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数量:

# cat /proc/cpuinfo

或者这样查看:

[root@localhost ~]# grep -c \'precessor\' /proc/cpuinfo0

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

监控系统的状态:vmstat

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

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

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。

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次。

# vmstat 1 5procs -----------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次。

# vmstat 1procs -----------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命令用于动态监控进程所占的系统资源,每3秒刷新一次,默认把占用系统资源(CPU、内存、磁盘I/O等)最高的进程放在最上面。

top - 14:17:19 up  3:41,  1 user,  load average: 0.00, 0.02, 0.05Tasks: 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 stKiB Mem :  1865308 total,  1370480 free,   139216 used,   355612 buff/cacheKiB 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

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

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

# top -bn1 -c | head -15top - 14:24:49 up  3:49,  1 user,  load average: 0.00, 0.01, 0.05Tasks: 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 stKiB Mem :  1865308 total,  1369280 free,   140300 used,   355728 buff/cacheKiB 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使用从高到低排序

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

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

  • 安装htop:
# 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,PID...]		只显示给定的PIDs   -s  --sort-key=COLUMN			依此列来排序   -v  --version					显示版本信息

  • 交互式命令:
上下键或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 install -y sysstat

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

# sarLinux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10时35分41秒       LINUX RESTART10时40分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle10时50分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9911时00分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9911时10分01秒     all      0.00      0.00      0.03      0.05      0.00     99.9211时20分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9811时30分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9911时40分01秒     all      0.00      0.00      0.01      0.01      0.00     99.9811时50分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9912时00分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9912时10分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9812时20分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9812时30分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9812时40分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9812时50分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9813时00分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9813时10分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9813时20分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9813时30分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9813时40分01秒     all      0.01      0.00      0.02      0.00      0.00     99.9713时50分01秒     all      0.00      0.00      0.02      0.00      0.00     99.9814时00分01秒     all      0.01      0.00      0.02      0.00      0.00     99.9714时10分01秒     all      0.00      0.00      0.01      0.00      0.00     99.9814时20分01秒     all      0.10      0.00      0.22      0.28      0.00     99.4114时20分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle14时30分01秒     all      0.00      0.00      0.01      0.01      0.00     99.9814时40分01秒     all      0.01      0.00      0.04      0.00      0.00     99.9414时50分01秒     all      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
# sar -n DEV | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10时35分41秒       LINUX RESTART10时40分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s10时50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0010时50分01秒     ens33      0.12      0.12      0.01      0.01      0.00      0.00      0.0011时00分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时00分01秒     ens33      0.09      0.11      0.01      0.01      0.00      0.00      0.0011时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时10分01秒     ens33      0.38      0.26      0.03      0.03      0.00      0.00      0.0011时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时20分01秒     ens33      0.15      0.12      0.01      0.01      0.00      0.00      0.0011时30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时30分01秒     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)

# sar -n DEV -f /var/log/sa/sa09 | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10时35分41秒       LINUX RESTART10时40分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s10时50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0010时50分01秒     ens33      0.12      0.12      0.01      0.01      0.00      0.00      0.0011时00分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时00分01秒     ens33      0.09      0.11      0.01      0.01      0.00      0.00      0.0011时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时10分01秒     ens33      0.38      0.26      0.03      0.03      0.00      0.00      0.0011时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时20分01秒     ens33      0.15      0.12      0.01      0.01      0.00      0.00      0.0011时30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0011时30分01秒     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
# sar -q | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10时35分41秒       LINUX RESTART10时40分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked10时50分01秒         0       130      0.00      0.02      0.05         011时00分01秒         0       129      0.00      0.01      0.05         011时10分01秒         0       131      0.01      0.02      0.05         011时20分01秒         0       130      0.00      0.01      0.05         011时30分01秒         0       129      0.00      0.01      0.05         011时40分01秒         0       130      0.00      0.01      0.05         011时50分01秒         0       130      0.00      0.01      0.05         012时00分01秒         0       129      0.00      0.01      0.05         012时10分01秒         0       131      0.00      0.01      0.05         012时20分01秒         0       131      0.00      0.01      0.05         0

  • 查看磁盘使用:sar -b
# sar -b | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10时35分41秒       LINUX RESTART10时40分01秒       tps      rtps      wtps   bread/s   bwrtn/s10时50分01秒      0.05      0.00      0.05      0.12      0.5411时00分01秒      0.06      0.02      0.04      0.59      0.5711时10分01秒      0.88      0.48      0.40     14.22      9.2111时20分01秒      0.04      0.00      0.03      0.11      0.3611时30分01秒      0.05      0.00      0.05      0.00      0.4711时40分01秒      0.05      0.00      0.05      0.04      0.7011时50分01秒      0.06      0.00      0.06      0.00      0.7012时00分01秒      0.02      0.00      0.02      0.00      0.2912时10分01秒      0.07      0.00      0.07      0.00      0.8412时20分01秒      0.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都可以查看磁盘使用情况。

  • iostat为静态显示:
# iostat -xLinux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle           0.01    0.00    0.04    0.04    0.00   99.91Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %utilsda               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.26scd0              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

  • iotop类似于top,可以动态显示某个进程使用磁盘的状况:
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/sActual 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]

查看内存使用状况:free

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

# free              total        used        free      shared  buff/cache   availableMem:        1865308      139724     1369236        9692      356348     1532092Swap:       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命令专门查看系统进程。

  • ps不加参数时无法显示详细的进程信息:
# ps   PID TTY          TIME CMD  1253 pts/0    00:00:00 bash  1939 pts/0    00:00:00 ps

  • ps aux 显示进程信息非常详细(ps -elf与ps aux作用类似):
# ps aux | head -15USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot          1  0.0  0.3 193492  6592 ?        Ss   10:35   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root          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]

上面,

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

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

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

查看网络状况:netstat

netstat命令用来查看网络连接状况、系统所开放端口、路由表等信息。

  • 常用用法:netstat -lnp 、netstat -an
# netstat -lnp | head -15Active 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     Pathunix  2      [ ACC ]     STREAM     LISTENING     19801    1152/master          private/tlsmgrunix  2      [ ACC ]     STREAM     LISTENING     19804    1152/master          private/rewriteunix  2      [ ACC ]     STREAM     LISTENING     19807    1152/master          private/bounceunix  2      [ ACC ]     STREAM     LISTENING     19810    1152/master          private/defer

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

  • netstat -an显示网络连接状况:
# netstat -an | head -20Active 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     ESTABLISHEDtcp6       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   Pathunix  2      [ ACC ]     STREAM     LISTENING     19801    private/tlsmgrunix  2      [ ACC ]     STREAM     LISTENING     19804    private/rewriteunix  2      [ ACC ]     STREAM     LISTENING     19807    private/bounceunix  2      [ ACC ]     STREAM     LISTENING     19810    private/deferunix  2      [ ACC ]     STREAM     LISTENING     19852    private/discardunix  2      [ ACC ]     STREAM     LISTENING     19858    private/virtualunix  2      [ ACC ]     STREAM     LISTENING     17445    /run/dbus/system_bus_socketunix  2      [ ACC ]     STREAM     LISTENING     19813    private/trace

netstat -an |awk \’/^tcp/{+=sta[$NF]}END{for(key in sta) print key,\”\\t\”,sta[key]}\’**查看tcp每一种状态出现的数量。

10.2 抓包工具

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

tcpdump 工具:tcpdump -nn

  • 安装tcpdump:
# yum install -y tcpdump

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

# tcpdump -nn -i ens33  -c 10tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes16:29:43.007506 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1203060315:1203060527, ack 4165463380, win 251, length 21216:29:43.008347 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 212:408, ack 1, win 251, length 19616:29:43.008424 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 408:572, ack 1, win 251, length 16416:29:43.008491 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 572:736, ack 1, win 251, length 16416:29:43.008555 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 736:900, ack 1, win 251, length 16416:29:43.008620 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 900:1064, ack 1, win 251, length 16416:29:43.008684 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1064:1244, ack 1, win 251, length 18016:29:43.008747 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1244:1424, ack 1, win 251, length 18016:29:43.008823 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1424:1604, ack 1, win 251, length 18016:29:43.009124 IP 192.168.100.1.51990 > 192.168.100.128.22: Flags [.], ack 1604, win 2053, length 010 packets captured11 packets received by filter0 packets dropped by kernel

wireshark工具:tshark

  • 安装tshark:
# yum install -y wireshark

  • 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.3 Linux网络相关

查看网卡IP:ifconfig ip addr

ifconfig命令类似于Windows的ipconfig命令,后面不跟任何选项和参数时,只显示当前网卡IP的相关信息(如子网掩码、网关等)。

  • 安装ifconfig:
# yum install -y net-tools

  • ifconfig 查看网卡IP:
# ifconfigens33: 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 0lo: 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

设置(修改)IP:vim /etc/sysconfig/network_scripts/ifcfg-ens33(这里以ens33为网卡名为例)。

  • 关闭网卡:
# ifdown 网卡名

  • 启动网卡:
# ifup 网卡名

  • 重启网卡:
# ifdown 网卡名; ifup 网卡名(远程时这样无法重启,会断开)或# ifdown 网卡名 && ifup 网卡名或# systemctl restart network

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

# cd /etc/sysconfig/network-scripts/# cp ifcfg-ens33 ifcfg-ens33:1# vim ifcfg-ens33:1TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33:1UUID=d71e4905-fa6f-4d09-8533-714dfb0b9e5dDEVICE=ens33:1ONBOOT=yesIPADDR=192.168.100.130NETMASK=255.255.255.0GATEWAY=192.168.100.2DNS1=8.8.8.8DNS2=4.2.2.2

# systemctl restart network# ifconfigens33: 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 0ens33: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 0x800010<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

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

  • mii-tool查看网卡是否连接:
# mii-tool ens33ens33: negotiated 1000baseT-FD flow-control, link ok

  • ethtool查看网卡状态:
# ethtool ens33Settings for ens33:Supported ports: [ TP ]Supported link modes:   10baseT/Half 10baseT/Full                         100baseT/Half 100baseT/Full                         1000baseT/Full Supported pause frame use: NoSupports auto-negotiation: YesSupported FEC modes: Not reportedAdvertised link modes:  10baseT/Half 10baseT/Full                         100baseT/Half 100baseT/Full                         1000baseT/Full Advertised pause frame use: NoAdvertised auto-negotiation: YesAdvertised FEC modes: Not reportedSpeed: 1000Mb/sDuplex: FullPort: Twisted PairPHYAD: 0Transceiver: internalAuto-negotiation: onMDI-X: off (auto)Supports Wake-on: dWake-on: dCurrent message level: 0x00000007 (7)       drv probe linkLink 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. 出现多个相同域名时,按最前面出现的记录来解析。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Linux日常运维(一)