日常运维

监控系统状态

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


w命令所显示字段的含义

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

查看CPU核数

cat  /proc/cpuinfo


表示逻辑CPU为1颗,物理CPU核心数为1

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

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

vmstat 1 5 表示每秒刷新一次,显示5次后终止(两个数字可以根据实际情况进行调整,若后一参数没有表示不停的进行刷新)


字段说明:

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

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

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

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

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

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

top命令类似于Windows的任务管理器:可以实时动态地查看系统的整体运行情况


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

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

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

字段解释:

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

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

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

使用该命令之前必须先安装sysstat

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

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

一个是/var/log/sa/saxx:xx为当天的日期。还有一个是/var/log/sa/sarxx,,以sa开头的是数据文件,无法直接用cat命令查看,

sa开头的文件是数据文件, 需要用sar -f 命令来读取;sar开头的文件可以直接使用cat进行查看

sar -n DEV 查看网卡流量


nload命令: 用来即时监看网路状态和各ip所使用的带宽,使用前必须先安装epel-release和nload

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

iostat -x,重点关注%util


字段解释:rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)

wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。

rsec/s:每秒读取的扇区数;wsec/:每秒写入的扇区数。

rKB/s:The number of read requests that were issued to the device per second

wKB/s:The number of write requests that were issued to the device per second

avgrq-sz 平均请求扇区的大小avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。

await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。 这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

iotop和top命令类似,简单直观(首先安装iotop)

-d选项指定信息刷新的时间,单位为秒

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


字段解释:

Mem:这一行表示物理内存的信息

Swap:这一行表示交换区的信息。

total列:表示物理内存总大小和交换分区的总大小。

used:已使用的内存或交换分区。

free:空闲的内存或者交换分区。

shared:共享的内存。

buff/cache:缓存区和缓冲区的容量大小。

buffer:缓冲区,CPU处理好的数据如果直接写入磁盘的话太慢了,需要先存放在内存中,这个过程就叫做缓冲。

cache:由于CPU直接到磁盘中读取数据也非常慢,所以程序需要先将磁盘中部分数据加载到内存中再让CPU进行计算,这叫做缓存。

available:可使用的内存容量大小。total=used+free+buff/cacheavailable包含free和buffer/cache剩余部分

-b:以Byte为单位显示内存使用情况。

-h:易读方式显示。

-k:以KB为单位显示内存使用情况。

-m:以MB为单位显示内存使用情况。

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

常用用法有ps aux 或 ps -ef 显示结果基本类似


字段解释:

USER:该进程属于那个使用者账号。

PID :该进程的进程ID号。

%CPU:该进程使用掉的CPU 资源百分比;

%MEM:该进程所占用的物理内存百分比;

VSZ :该进程使用掉的虚拟内存量 (Kbytes)

RSS :该进程占用的固定的内存量 (Kbytes)

TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。STAT:该程序目前的状态,主要的状态有: D 不能中断的进程 R run状态的进程 S sleep状态的进程 T 暂停的进程 Z 僵尸进程 < 高优先级进程 N 低优先级进程 L 内存中被锁了内存分页 s 主进程 l 多线程进程 + 前台进程START:该进程被触发启动的时间;

TIME :该进程实际使用

CPU 运作的时间。

COMMAND:该程序的实际指令。

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

常用参数有:tlupn


##关于STATE列各个状态的一个简要说明:LISTEN:侦听并等待对端的TCP连接请求

SYN-SENT:发送SYN连接请求后,等待对端回复SYN请求

SYN-RECEIVED:收到来自对端的SYN请求,并回复SYN请求后,等待对端响应SYN请求的ACK消息

ESTABLISHED:代表连接建立,双方在这个状态下进行TCP数据交互

FIN-WAIT-1:发送FIN关闭连接请求后,等待对方响应FINACK消息或者对端的FIN关闭请求

FIN-WAIT-2:等待对方FIN关闭请求CLOSE-WAIT:等待本地用户(进程)发送FIN关闭请求给对端

CLOSING:当双方同时发送FIN关闭请求时,会进入CLOSING状态,等待对端发送FIN报文的响应ACK消息LAST-ACK:收到对端FIN请求后,回复ACKFIN并等待对方回复FIN的响应ACK消息,此时进入此状态TIME-WAIT:该状态是为了确保对端收到了FIN请求的ACK响应,默认会等待两倍MSL时长

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

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

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

直接执行tcpdump将监视第一个网络接口上所有流过的数据包,因为我本机是ens33,所以需要用-i指定监听的网卡


tshark是另外一个和tcpdump相似的工具,首先需要安装wireshark

ifconfig查看网卡ip

如果没有该命令,先安装net-tools


关闭、启动网卡

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

ifdown eth0&&ifup eth0---使用&&同时执行关闭和开启网卡命令

设定虚拟网卡

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

首先进入网卡配置目录

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

复制一份网卡配置文件

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

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

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

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

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

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

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

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

C:\Users\LongGe>ping 10.1.1.100

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

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

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

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

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

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

更改主机名

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

[root@long01 ~]# sed -i 's/.*/long001/g' /etc/hostname
[root@long01 ~]# cat /etc/hostname 
long001
通过修改hostname文件修改主机名后需要重启系统才会生效
[root@long001 ~]# hostname
long001
  • 用命令:hostnamectl set-hostname 来实现修改主机名。
[root@long001 ~]# hostnamectl set-hostname long0000
[root@long001 ~]# 登出
重新登录后就会生效。
[root@long0000 ~]# hostname
long0000

DNS配置

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

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

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

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

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

hosts文件

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

[root@long0000 ~]# echo "10.1.1.169 www.test1.com" >> /etc/hosts
[root@long0000 ~]# ping www.test1.com
PING www.test1.com (10.1.1.169) 56(84) bytes of data.
64 bytes from www.test1.com (10.1.1.169): icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from www.test1.com (10.1.1.169): icmp_seq=2 ttl=64 time=0.388 ms
64 bytes from www.test1.com (10.1.1.169): icmp_seq=3 ttl=64 time=0.175 ms
64 bytes from www.test1.com (10.1.1.169): icmp_seq=4 ttl=64 time=0.234 ms
^C
--- www.test1.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.173/0.242/0.388/0.088 ms
 ip命令使用
1. 设置和删除IP
ip  addr add 192.168.10.10/24  dev eth0
ip  addr show eth0
ip addr del 192.168.10.10/24  dev eth0
2. 路由相关设置
ip route show
ip route add default  via 192.168.10.1
ip route add 192.168.5.0/24 dev eth0
ip 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.106
(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/24
3. 显示网络统计数据
ip -s link
ip -s -s link ls eth0
3. 停止开启网卡
ip link set eth0 down
ip linke set eth0 up
更改网卡名字
ip link set ens37 name eth1 
扩展

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

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



猜你喜欢

转载自blog.csdn.net/swtirene/article/details/80614258