您的位置:首页 > 运维架构

2018-06-08笔记(日常运维一)

2018-06-10 22:55 656 查看

第十章 日常运维

10.1 使用w、uptime查看系统负载

[root@localhost ~]# w
22:02:05 up  1:12,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.66.1     20:51    5.00s  0.03s  0.00s w

第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,系统平均负载(1分钟、5分钟、15分钟、使用cpu的活动的进程有多少个)。
第二行开始以及下面所有的行,当前登录的都有哪些用户,以及他们是从哪里登录的等等。

load averag第一个数值表示1分钟内系统的平均负载值;第二个数值表示5分钟内系统的平均负载值;第三个数值表示15分钟系统的平均负载值。这个值的意义是,单位时间段内CPU活动进程数。当然这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系。
查看cup信息
#cat /proc/cpuinfo

[root@localhost ~]# cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
stepping    : 3
microcode   : 0x1e
cpu MHz     : 2393.712
cache size  : 6144 KB
physical id : 0
siblings    : 1
core id     : 0

processor数量+1表示有多少个逻辑cpu,如果数字为1,则表示有2个逻辑cpu,以此类推,物理cpu可以查看physical id这个字段
#uptime命令可以查看机器运行时间,登陆用户有几个,系统平均负载

[root@localhost ~]# uptime
20:24:09 up  1:37,  2 users,  load average: 0.00, 0.01, 0.05

10.2vmstat命令

[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
2  0      0 775360   2076 121164    0    0    16     3   56   61  0  0 100  0  0

vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu. 重点关注一下r b si so bi bo几列
1)procs 显示进程相关信息

r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;

2)memory 内存相关信息

swpd :表示切换到交换分区中的内存数量 ;

free :当前空闲的内存数量;

buff :缓冲大小,(即将写入磁盘的);

cache :缓存大小,(从磁盘中读取的);

3)swap 内存交换情况

si :由交换区写入到内存的数据量;

so :由内存写入到交换区的数据量;

4)io 磁盘使用情况

bi :从块设备读取数据的量(读磁盘);

bo: 从块设备写入数据的量(写磁盘);

5)system 显示采集间隔内发生的中断次数

in :表示在某一时间间隔中观测到的每秒设备中断数;

cs :表示每秒产生的上下文切换次数;

6)CPU 显示cpu的使用状态

us :显示了用户下所花费 cpu 时间的百分比;

sy :显示系统花费cpu时间百分比;

id :表示cpu处于空闲状态的时间百分比;

wa :表示I/O等待所占用cpu时间百分比;

st :表示被偷走的cpu所占百分比

vmstat 查看系统状态的时候,通常都是使用这样的形式来看的

[root@localhost ~]# vmstat 1 5

或者

[root@localhost ~]# vmstat 1

前面表示,每隔一秒钟打印一次状态,共打印5次,而后面的表示每隔1秒打印一次状态,一直打印,可以按 Ctrl + c 结束

10.3 top 命令

top 命令可以动态显示进程所占系统资源

[root@localhost ~]# top
top - 20:39:26 up  1:52,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  87 total,   1 running,  86 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 :   999700 total,   774940 free,   101488 used,   123272 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   750596 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
1604 root      20   0  157632   2184   1548 R  0.3  0.2   0:00.01 top
1 root      20   0  125376   3812   2540 S  0.0  0.4   0:01.16 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.06 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.14 kworker/u256:0
7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 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.27 rcu_sched
10 root      rt   0       0      0      0 S  0.0  0.0   0:00.03 watchdog/0
12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd
15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback

从上面可以看出
总共87个任务(进程),1个任务处于运行中,86个进程处于休眠状态,0个停止的,0个僵尸进程

zombie:僵尸进程,主进程已经意外停止,剩下一些子进程

st:表示被偷走的cpu百分比,如果服务器做了虚拟化,那么一些子机会偷走主机的cpu

如果us长时间占用cpu长期大于20-30%,会使cpu匮乏,对cpu有害

进程排序:默认按cpu占用率排序,如果按下M键,则按照内存占用大小排序,再按下P,恢复为cpu排序

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
778 root      20   0  562428  18644   5936 S  0.0  1.9   0:00.99 tuned
509 root      20   0  210220  13912   3244 S  0.0  1.4   0:00.40 rsyslogd
526 polkitd   20   0  534172  12040   4628 S  0.0  1.2   0:00.13 polkitd
515 root      20   0  556272   9308   6952 S  0.0  0.9   0:00.67 NetworkManager
522 root      20   0  305332   6280   4900 S  0.0  0.6   0:05.76 vmtoolsd
521 root      20   0   99644   6116   4512 S  0.0  0.6   0:00.09 VGAuthService
848 root      20   0  148360   5412   4112 S  0.0  0.5   0:00.27 sshd
1515 root      20   0  148360   5408   4112 S  0.0  0.5   0:00.17 sshd
780 root      20   0  106040   4096   3116 S  0.0  0.4   0:00.08 sshd

RES :实际占用的物理内存大小,以KB为单位
按下数字1:显示所有cpu的占用率

%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

按下q键可以退出top
top -c 可以查看到全局的进程命令

[root@localhost ~]# top -c
top - 20:59:03 up  2:12,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  88 total,   1 running,  87 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999700 total,   774800 free,   101620 used,   123280 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   750460 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
1 root      20   0  125376   3812   2540 S  0.0  0.4   0:01.17 /usr/lib/systemd/systemd --switch+
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.07 [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.18 [kworker/u256:0]
7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 [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.29 [rcu_sched]
10 root      rt   0       0      0      0 S  0.0  0.0   0:00.03 [watchdog/0]
12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [kdevtmpfs]
13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [netns]
14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [khungtaskd]

top -bn1 静态的一次性地显示所有的信息,适合写脚本时使用

[root@localhost ~]# top -bn1
top - 20:59:43 up  2:13,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  88 total,   1 running,  87 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 :   999700 total,   774924 free,   101496 used,   123280 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   750584 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
1 root      20   0  125376   3812   2540 S  0.0  0.4   0:01.17 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.07 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.18 kworker/u256:0
7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 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.29 rcu_sched
10 root      rt   0       0      0      0 S  0.0  0.0   0:00.03 watchdog/0
12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd
15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd

10.4 sar命令

yum install -y sysstat   如果没有sar命令可以安装这个包
sar -n DEV  网卡流量
sar -q  系统负载
sar -b  磁盘读写
sar -f /var/log/sa/saxx  历史文件

sar命令第一次使用会提示没有文件或目录,那是因为sar不加选项会调用系统保留的历史文件 /var/log/sa下的文件,要想正常调用,必须等到10分钟的整数时间点才会有这个文件

[root@localhost ~]# sar
无法打开 /var/log/sa/sa10: 没有那个文件或目录

sar -n DEV 1 10 查看网卡流量,每一秒打印一次,总共打印10次

[root@localhost ~]# sar -n DEV 1 10
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2018年06月10日     _x86_64_    (1 CPU)
21时10分31秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
21时10分32秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21时10分32秒     ens33      1.00      1.00      0.06      0.20      0.00      0.00      0.00
21时10分32秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
21时10分33秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21时10分33秒     ens33      1.00      1.00      0.06      0.40      0.00      0.00      0.00
21时10分33秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
21时10分34秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21时10分34秒     ens33      1.00      1.00      0.06      0.40      0.00      0.00      0.00
21时10分34秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
21时10分35秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21时10分35秒     ens33      1.01      1.01      0.06      0.40      0.00      0.00      0.00
21时10分35秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
21时10分36秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21时10分36秒     ens33      2.00      2.00      0.12      0.46      0.00      0.00      0.00

其中IFACE表示网卡的名字,r表示recieve接受的,t表示transport传输出去的

rxpck表示接收到的数据包量,几千的数据包量属于正常的,如果上万就可能被×××了,需要借用抓包工具查看

txpck表示传输出去的数据包量

rxkB表示接收到的数据量为多少KB

txkB表示传输出去的数据量为多少KB
sar -f /var/log/sa/saxx 查看历史信息

[root@localhost ~]# sar -n DEV -f /var/log/sa/sa10
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2018年06月10日     _x86_64_    (1 CPU)
20时20分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
20时30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
20时30分01秒     ens33      0.79      0.24      0.05      0.02      0.00      0.00      0.00
20时40分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
20时40分01秒     ens33      0.71      0.22      0.04      0.13      0.00      0.00      0.00
20时50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

sar -n DEV -f /var/log/sa/sa10 可以查看历史文件10号的网卡流量信息,sa10文件为10号的文件,/var/log/sa目录下的文件最多保留1个月, 当天/var/log/sa/目录下会生成类似日期为sa10的二进制文件,第二天这个目录下会生成sar10的文件,sar10的文件可以cat查看
sar -q查看历史负载

[root@localhost ~]# sar -q
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2018年06月10日     _x86_64_    (1 CPU)
20时20分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
20时30分01秒         1       103      0.00      0.01      0.05         0
20时40分01秒         2       104      0.00      0.01      0.05         0
20时50分01秒         1       105      0.02      0.03      0.05         0
21时00分01秒         1       104      0.00      0.01      0.05         0
21时10分01秒         1       105      0.00      0.02      0.05         0
21时20分01秒         1       104      0.00      0.01      0.05         0
21时30分01秒         1       103      0.00      0.01      0.05         0
平均时间:         1       104      0.00      0.01      0.05         0

sar -b 查看磁盘

[root@localhost ~]# sar -b
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2018年06月10日     _x86_64_    (1 CPU)

20时20分01秒       tps      rtps      wtps   bread/s   bwrtn/s
20时30分01秒      0.08      0.00      0.07      0.04      0.81
20时40分01秒      0.05      0.00      0.05      0.11      0.69
20时50分01秒      0.05      0.00      0.05      0.00      0.46

10.5 nload命令(实时动态查看网卡流量)

如果没有nload命令,需要安装包,因为默认源里面没有nload包,所以需要安装扩展源

yum install epel-release
yum install nload
Device ens33 [192.168.66.130] (1/2):
=======================================================================================================
Incoming:
Curr: 944.00 Bit/s
Avg: 1.11 kBit/s
Min: 936.00 Bit/s
Max: 1.84 kBit/s
Ttl: 529.79 kByte
Outgoing:

Curr: 8.27 kBit/s
Avg: 8.14 kBit/s
Min: 4.23 kBit/s
Max: 8.73 kBit/s
Ttl: 3.89 MByte

按左右方向键可以切换网卡,按q退出

有×××时Incoming的流量会比较大,

占用带宽看的是Outgoing的流量

10.6iostat命令 iotop命令,查看磁盘io

有时候查看到的cpu和内存还有剩余,但是系统负载还是很高,我们用vmstat命令查看发现b列或wa列值比较大,说明系统磁盘有瓶颈,这时候就需要去查看磁盘的状态了
安装包:yum install -y sysstat 和sar命令是同一个包
直接输入iostat命令

[root@localhost ~]# iostat
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2018年06月10日     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.03    0.00    0.10    0.17    0.00   99.70

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.06        10.01         2.35      97333      22884
scd0              0.00         0.11         0.00       1028          0

可以看到cpu负载和磁盘的读写数据信息
iostat -x
加上-x选项指标会更多,其中一个比较重要的是%util,这个指标代表的是cpu等待io进程的时间比例,如果这个值很大,说明磁盘io很忙,则读写rkB/s wkB/s 也会很大,如果读写值不大,则说明磁盘有问题或故障

[root@localhost ~]# iostat -x
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2018年06月10日     _x86_64_    (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.03    0.00    0.10    0.16    0.00   99.70
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.02    0.47    0.57     9.83     2.35    23.37     0.01         12.47   12.36   12.56   2.96   0.31
scd0              0.00         0.00    0.00    0.00     0.10     0.00   114.22     0.00         23.83   23.83    0.00  22.78   0.00

iotop
安装包yum install -y iotop
iotop动态显示磁盘信息,将磁盘使用情况根据占用IO的比例大小排序后展示出来

[root@localhost ~]# iotop
Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:     190.20 K/s
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-r~stem --deserialize 21
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 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
523 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % rsyslogd -n [rs:main Q:Reg]
12 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
13 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]
15 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [writeback]
16 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kintegrityd]
17 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
18 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kblockd]
19 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [md]
533 be/4 chrony  0.00 B/s    0.00 B/s  0.00 %  0.00 % chronyd
535 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % agetty --nocl

10.7free命令,查看内存使用情况

[root@localhost ~]# free
total           used        free             shared  buff/cache   available
Mem:         999700      102480      608556        6868      288664      725444
Swap:       2097148           0     2097148
[root@localhost ~]# free -m
total        used        free      shared  buff/cache   available
Mem:            976         100         594           6         281         708
Swap:          2047           0        2047
[root@localhost ~]# free -h
total        used        free      shared  buff/cache   available
Mem:           976M        100M        594M        6.7M        281M        708M
Swap:          2.0G          0B        2.0G

直接输入free可以看到内存的使用信息,默认为kb,-m又MB显示,-h又合适的单位显示,其中:
total=used+free+buff/cache,available包含了free和buff/cache剩余部分
buff:缓冲,当cpu写数据到磁盘时,被暂放在内存中 的数据
cache:缓存,当cpu从磁盘读取数据时,被暂放在内存中的数据

10.8ps命令 查看系统进程

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
用法:ps aux或者ps -elf
a:显示现行终端机下的所有程序,包括其他用户的程序
u:以用户为主的格式来显示程序状况
x:显示所有程序,不以终端机来区分
-e:此选项的效果和a选项相同
e:列出程序时,显示每个程序所使用的环境变量
-f:显示UID,PPIP,C与STIME栏位
f:用ASCII字符显示树状结构,表达程序间的相互关系
-l或l:采用详细的格式来显示程序状况

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125376  3812 ?        Ss   18:46   0:01 /usr/lib/systemd/systemd --switched-r
root          2  0.0  0.0      0     0 ?        S    18:46   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    18:46   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   18:46   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    18:46   0:00 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    18:46   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    18:46   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    18:46   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S    18:46   0:00 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S    18:46   0:00 [kdevtmpfs]
root         13  0.0  0.0      0     0 ?        S<   18:46   0:00 [netns]
root         14  0.0  0.0      0     0 ?        S    18:46   0:00 [khungtaskd]
root         15  0.0  0.0      0     0 ?        S<   18:46   0:00 [writeback]
root         16  0.0  0.0      0     0 ?        S<   18:46   0:00 [kintegrityd]
root         17  0.0  0.0      0     0 ?        S<   18:46   0:00 [bioset]
root         18  0.0  0.0      0     0 ?        S<   18:46   0:00 [kblockd]
root         19  0.0  0.0      0     0 ?        S<   18:46   0:00 [md]
root         25  0.0  0.0      0     0 ?        S    18:46   0:00 [kswapd0]
root         26  0.0  0.0      0     0 ?        SN   18:46   0:00 [ksmd]
root         27  0.0  0.0      0     0 ?        SN   18:46   0:00 [khugepaged]
root         28  0.0  0.0      0     0 ?        S<   18:46   0:00 [crypto]
root         36  0.0  0.0      0     0 ?        S<   18:46   0:00 [kthrotld]
root         37  0.0  0.0      0     0 ?        S    18:46   0:00 [kworker/u256:1]

PID :进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用 ‘kill 进程的pid 有时并不能杀掉,则需要加一个-9选项了 kill -9 进程pid
STAT :表示进程的状态,进程状态分为以下几种(不要求记住,但要了解)
D 不能中断的进程(通常为IO)
R 正在运行中的进程
S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态
T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态
W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配
X 已经死掉的进程(这个好像从来不会出现)
Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。
< 高优先级进程
N 低优先级进程
L 在内存中被锁了内存分页
s 主进程
l 多线程进程

  • 代表在前台运行的进程
    ps aux用途:检查某个进程有没有,使用命令 # ps aux |grep 进程名
    [root@localhost ~]# ps aux |grep sshd
    root        780  0.0  0.4 106040  4096 ?        Ss   18:46   0:00 /usr/sbin/sshd -D
    root        848  0.0  0.5 148360  5412 ?        Ss   18:48   0:00 sshd: root@pts/0
    root       1515  0.0  0.5 148360  5408 ?        Ss   20:16   0:00 sshd: root@pts/1
    root       1958  0.0  0.0 112720   968 pts/1    R+   22:03   0:00 grep --color=auto sshd

    ls -l /proc/进程号,可以查看某个进程的启动位置

    [root@localhost ~]# ls -l /proc/780
    总用量 0
    dr-xr-xr-x 2 root root 0 6月  10 22:04 attr
    -rw-r--r-- 1 root root 0 6月  10 22:04 autogroup
    -r-------- 1 root root 0 6月  10 22:04 auxv
    -r--r--r-- 1 root root 0 6月   9 20:49 cgroup
    --w------- 1 root root 0 6月  10 22:04 clear_refs
    -r--r--r-- 1 root root 0 6月   9 20:49 cmdline
    -rw-r--r-- 1 root root 0 6月   9 20:49 comm
    -rw-r--r-- 1 root root 0 6月  10 22:04 coredump_filter
    -r--r--r-- 1 root root 0 6月  10 22:04 cpuset
    lrwxrwxrwx 1 root root 0 6月  10 22:04 cwd -> /
    -r-------- 1 root root 0 6月  10 21:53 environ
    lrwxrwxrwx 1 root root 0 6月   9 20:49 exe -> /usr/sbin/sshd
    ...

    10.9netstat命令查看网络状况


    netstat -lnp查看监听端口,l表示listen,n以数字显示,p表示port端口

    [root@localhost ~]# 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      780/sshd
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1475/sendmail: acce
    tcp6       0      0 :::22                   :::*                    LISTEN      780/sshd
    udp        0      0 127.0.0.1:323           0.0.0.0:*                           533/chronyd
    udp6       0      0 ::1:323                 :::*                                533/chronyd
    raw6       0      0 :::58                   :::*                    7           515/NetworkManager
    Active UNIX domain sockets (only servers)
    Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
    unix  2      [ ACC ]     STREAM     LISTENING     12554    1/systemd            /run/systemd/private
    unix  2      [ ACC ]     SEQPACKET  LISTENING     12570    1/systemd            /run/udev/control
    unix  2      [ ACC ]     STREAM     LISTENING     14921    1/systemd            /var/run/dbus/system_bus_socket
    unix  2      [ ACC ]     STREAM     LISTENING     8423     1/systemd            /run/systemd/journal/stdout
    unix  2      [ ACC ]     STREAM     LISTENING     16111    521/VGAuthService    /var/run/vmware/guestServicePipe

    同一台服务器的两个进程间使用socket协议通信
    netstat -lntp 只查看tcp协议端口状态,t表示tcp

    [root@localhost ~]# 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      780/sshd
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1475/sendmail: acce
    tcp6       0      0 :::22                   :::*                    LISTEN      780/sshd

    netstat -an 查看所有的连接状态

    [root@localhost ~]# 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 192.168.66.130:22       192.168.66.1:55443      ESTABLISHED
    tcp        0      0 192.168.66.130:22       192.168.66.1:52857      ESTABLISHED
    tcp6       0      0 :::22                   :::*                    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      [ ]         DGRAM                    15872    /var/run/chrony/chronyd.sock
    unix  2      [ ACC ]     STREAM     LISTENING     12554    /run/systemd/private
    unix  2      [ ACC ]     SEQPACKET  LISTENING     12570    /run/udev/control
    unix  2      [ ]         DGRAM                    12613    /run/systemd/shutdownd
    unix  2      [ ACC ]     STREAM     LISTENING     14921    /var/run/dbus/system_bus_socket
    unix  2      [ ]         DGRAM                    8413     /run/systemd/notify
    unix  2      [ ]         DGRAM                    8415     /run/systemd/cgroups-agent
    unix  2      [ ACC ]     STREAM     LISTENING     8423     /run/systemd/journal/stdout
    unix  5      [ ]         DGRAM                    8426     /run/systemd/journal/socket
    unix  13     [ ]         DGRAM                    8428     /dev/log
    unix  2      [ ACC ]     STREAM     LISTENING     16111    /var/run/vmware/guestServicePipe
    unix  3      [ ]         STREAM     CONNECTED     18586    /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     14992
    unix  3      [ ]         STREAM     CONNECTED     15309
    unix  3      [ ]         STREAM     CONNECTED     14953
    unix  2      [ ]         DGRAM                    28422
    unix  3      [ ]         STREAM     CONNECTED     15310    /run/systemd/journal/stdout
    unix  2      [ ]         DGRAM                    16114
    unix  3      [ ]         STREAM     CONNECTED     15124    /var/run/dbus/system_bus_socket
    unix  2      [ ]         DGRAM                    27899
    unix  3      [ ]         STREAM     CONNECTED     15560    /run/systemd/journal/stdout
    unix  2      [ ]         DGRAM                    28249
    unix  2      [ ]         DGRAM                    19064
    unix  3      [ ]         STREAM     CONNECTED     15559
    unix  2      [ ]         DGRAM                    16113
    unix  3      [ ]         STREAM     CONNECTED     15358    /run/systemd/journal/stdout
    unix  3      [ ]         STREAM     CONNECTED     15357
    unix  3      [ ]         STREAM     CONNECTED     17883
    unix  3      [ ]         STREAM     CONNECTED     17953
    unix  3      [ ]         STREAM     CONNECTED     18585
    unix  3      [ ]         STREAM     CONNECTED     14993    /run/systemd/journal/stdout
    unix  2      [ ]         DGRAM                    12955
    unix  3      [ ]         STREAM     CONNECTED     16180    /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     17884    /run/systemd/journal/stdout
    unix  3      [ ]         STREAM     CONNECTED     17954    /run/systemd/journal/stdout
    unix  3      [ ]         STREAM     CONNECTED     16010    /var/run/dbus/system_bus_socket
    unix  2      [ ]         DGRAM                    16024
    unix  3      [ ]         STREAM     CONNECTED     15821
    unix  3      [ ]         STREAM     CONNECTED     15822    /run/systemd/journal/stdout
    unix  3      [ ]         STREAM     CONNECTED     14784
    unix  3      [ ]         STREAM     CONNECTED     15180
    unix  3      [ ]         STREAM     CONNECTED     16009
    unix  3      [ ]         STREAM     CONNECTED     14783
    unix  3      [ ]         STREAM     CONNECTED     16043
    unix  3      [ ]         STREAM     CONNECTED     15123
    unix  2      [ ]         DGRAM                    15995
    unix  2      [ ]         DGRAM                    15661
    unix  3      [ ]         STREAM     CONNECTED     15181    /run/systemd/journal/stdout
    unix  3      [ ]         STREAM     CONNECTED     13347    /run/systemd/journal/stdout
    unix  2      [ ]         DGRAM                    15183
    unix  2      [ ]         DGRAM                    15933
    unix  3      [ ]         STREAM     CONNECTED     16179
    unix  3      [ ]         DGRAM                    13373
    unix  2      [ ]         DGRAM                    14774
    unix  3      [ ]         STREAM     CONNECTED     15668    /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     13346
    unix  3      [ ]         STREAM     CONNECTED     15667
    unix  3      [ ]         STREAM     CONNECTED     16044    /var/run/dbus/system_bus_socket
    unix  3      [ ]         DGRAM                    13374
    unix  3      [ ]         STREAM     CONNECTED     15122
    unix  2      [ ]         DGRAM                    15824
    unix  2      [ ]         DGRAM                    13353

    关于网络连接的一些状态可以查看 tcp三次握手四次挥手的文章 :
    https://www.geek-share.com/detail/2707584434.html
    统计tcp连接各种状态的数量
    netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

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

    如果处于ESTABLISHED的状态很多,说明系统很忙,一般1000以内 的数字服务器都能够接受,如果几万个说明有可能受到×××
    ss -an 用这个命令查看网络状态时不会显示进程的名字和PID

    [root@localhost ~]# ss -an
    Netid State      Recv-Q Send-Q    Local Address:Port                   Peer Address:Port
    nl    UNCONN     0      0                     0:2055209475                         *
    nl    UNCONN     0      0                     0:0                                  *
    nl    UNCONN     0      0                     0:2055209475                         *
    nl    UNCONN     768    0                     4:0                                  *
    nl    UNCONN     4352   0                     4:2025                               *
    nl    UNCONN     0      0                     6:0                                  *
    nl    UNCONN     0      0                     7:0                                  *
    nl    UNCONN     0      0                     9:1                                  *
    nl    UNCONN     0      0                     9:0                                  *
    nl    UNCONN     0      0                     9:486                                *
    nl    UNCONN     0      0                    10:0                                  *
    nl    UNCONN     0      0                    11:0                                  *
    nl    UNCONN     0      0                    15:-4117                              *
    nl    UNCONN     0      0                    15:527                                *
    nl    UNCONN     0      0                    15:-4119                              *
    nl    UNCONN     0      0                    15:-4120                              *
    nl    UNCONN     0      0                    15:0                                  *
    nl    UNCONN     0      0                    15:778                                *
    nl    UNCONN     0      0                    15:-4107                              *
    nl    UNCONN     0      0                    15:515                                *

    10.10Linux下抓包

    抓包工具:tcpdump
    用法:tcpdump -nn

    [root@localhost ~]# tcpdump -nn
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

    如果出现上面情况,说明网卡名字比较特殊,需要在命令中指定网卡名字
    tcpdump -nn -i 网卡名字
    命令中的两个n表示将下面中的第一IP和端口以数字的方式展示出来,不指定的话会显示为主机名和端口名称

    22:22:04.599754 IP 192.168.66.1.55443 > 192.168.66.130.22: Flags [.], ack 1205320, win 2049, length 0
    22:22:04.599762 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1205320:1205500, ack 157, win 274, length 180
    22:22:04.599866 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1205500:1205776, ack 157, win 274, length 276
    22:22:04.599975 IP 192.168.66.1.55443 > 192.168.66.130.22: Flags [.], ack 1205776, win 2047, length 0
    22:22:04.599983 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1205776:1205956, ack 157, win 274, length 180
    22:22:04.600087 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1205956:1206232, ack 157, win 274, length 276
    22:22:04.600199 IP 192.168.66.1.55443 > 192.168.66.130.22: Flags [.], ack 1206232, win 2053, length 0
    22:22:04.600207 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1206232:1206412, ack 157, win 274, length 180
    22:22:04.600310 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1206412:1206688, ack 157, win 274, length 276
    22:22:04.600418 IP 192.168.66.1.55443 > 192.168.66.130.22: Flags [.], ack 1206688, win 2051, length 0
    22:22:04.600426 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1206688:1206868, ack 157, win 274, length 180
    22:22:04.600535 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1206868:1207144, ack 157, win 274, length 276
    22:22:04.600644 IP 192.168.66.1.55443 > 192.168.66.130.22: Flags [.], ack 1207144, win 2049, length 0
    22:22:04.600653 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1207144:1207324, ack 157, win 274, length 180
    22:22:04.600757 IP 192.168.66.130.22 > 192.168.66.1.55443: Flags [P.], seq 1207324:1207600, ack 157, win 274, length 276

    我们主要查看的是两个IP间数据的流向和length,一般我们看到的包都是TCP的包,如果看到UDP的包,很有可能是被×××了
    # tcpdump -nn port 端口号 //抓取指定端口号
    # tcpdump -nn not port 端口号 //不抓取指定端口号
    指定包的长度
    \ # tcpdump -nn -c 长度值
    将抓取到的数据存储到指定文件-w
    \ # tcpdump -nn -w /tmp/1.cap

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

    1.cap文件是不能直接cat的,否则会乱码,因为这个文件是从服务器网卡中捕获的数据包,就是我们真正通信的数据,如果想查看这个文件,使用命令# tcpdump -r /tmp/1.cap

    [root@localhost ~]# tcpdump -r /tmp/1.cap
    reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
    22:26:18.404881 IP localhost.localdomain.ssh > 192.168.66.1.55443: Flags [P.], seq 831942262:831942410, ack 1313270563, win 296, length 148
    22:26:18.405084 IP 192.168.66.1.55443 > localhost.localdomain.ssh: Flags [.], ack 148, win 2053, length 0
    22:26:18.683738 ARP, Request who-has gateway tell 192.168.66.1, length 46
    22:26:19.395351 ARP, Request who-has gateway tell 192.168.66.1, length 46
    22:26:20.394756 ARP, Request who-has gateway tell 192.168.66.1, length 46
    22:26:21.684527 ARP, Request who-has gateway tell 192.168.66.1, length 46

    tshark命令

先要安装# yum install wireshark 包

wireshark工具和tcpdump工具类似,wireshark就有一个tshak
使用下述命令可以查看80端口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"

[root@izwz97d3catjonpf5xybg0z ~]#  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 22:31:37.137837401 CST"   172.18.158.103      POST    /agent/metrics/putLines

10.11 linux网络相关

1、使用# ifconfig查看网卡ip

如果没有命令需要安装对应的包# yum install net-tools

# ifconfig

[root@izwz97d3catjonpf5xybg0z ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 172.18.158.103  netmask 255.255.240.0  broadcast 172.18.159.255
ether 00:16:3e:0e:82:2c  txqueuelen 1000  (Ethernet)
RX packets 3686075  bytes 766773356 (731.2 MiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 3150028  bytes 890353393 (849.1 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
loop  txqueuelen 1  (Local Loopback)
RX packets 692866  bytes 42992964 (41.0 MiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 692866  bytes 42992964 (41.0 MiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2、 ifconfig -a
选项-a表示查看所有的网卡,包括被down掉的网卡或者没有ip的网卡
3、 ifdown 网卡名 && ifup 网卡名
开关闭卡后立即开启网卡,以防止主机断网而导致远程登录终端连接不到主机

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

4、查看网卡是否连接
mii-tool 网卡名字

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

link ok说明连接正常
或者另一个命令查看# ethtool 网卡名字

[root@localhost ~]# 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

5、更改主机名
# hostnamectl set-hostname 新主机名

[root@localhost ~]# hostnamectl set-hostname luo
[root@localhost ~]# bash
[root@luo ~]#

退出当前终端后重新登录或者重新打开一个新的bash即可看到新的主机名
要想永久生效,编辑配置文件/etc/hostname
6、DNS配置文件/etc/resolv.conf

# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8

7、/etc/hosts文件
这个文件用来定义域名指向到哪个ip

[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

8、其他一些扩展的知识
ip命令使用

  1. 设置和删除IP
    ip addr add 192.168.10.10/24 dev eth0ip addr show eth0ip addr del 192.168.10.10/24 dev eth0
  2. 路由相关设置ip route showip route add default via 192.168.10.1ip route add 192.168.5.0/24 dev eth0ip route del 192.168.10.1
    另外用route命令来管理路由:
    (a)、网络路由# route add -net 192.168.1.0/24 gw 172.16.1.106
    (b)、主机路由# route add -host 192.168.1.110 gw 172.16.1.10
    (c)、默认路由# route add default gw 172.16.1.106或# route add -net 0.0.0.0 gw 172.16.1.106
    (d)、删除路由# route del -host 192.168.1.110# route del -net 192.168.1.0/243.
    显示网络统计数据ip -s linkip -s -s link ls eth03.
    停止开启网卡ip link set eth0 downip linke set eth0 up
    更改网卡名字ip link set ens37 name eth1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 日常运维