10.1-10.11 预习笔记

1. 使用w查看系统负载

作为运维人员应对自己的系统充分了解才能有效的排查问题

语法 # w

可以用来查看系统的负载

如下图直接敲命令w, 可以得到一些信息

1)第一行的信息分别为

  • 时间

  • 系统启动了多久

  • 几个用户登录

  • load average表示系统在1min(最能体现出当前系统的负载情况), 5min, 15min内系统的负载值,是一个数值-单位时间段内使用CPU的活动的进程的个数,并且为一个平均值可以是带小数点的数值也可以为100多的数值

如上图显示,如果load average的数值为0,则表明当前CPU的为空闲,没有活动进程,对服务器或linux操作系统来向,空耗系统;那么最理想的状态就是load average的数值与系统中的逻辑CPU的颗数相同,表示系统既不空闲也没有什么压力

我们可以用# cat proc/cpuinfo来查看系统的逻辑CPU的个数,如下图,逻辑CPU颗数的信息就为第一行processor的数值+1,所以下图中的逻辑CPU就是1个,那么系统的负载只要不超过1就可以了,如果超过1表明有进程pending等待CPU来分配资源,对系统的运行可能会造成影响

在CPU工作的时候只要保证每一颗CPU都有一个进程就可以了

2)第二行的信息

系统登录用户的信息,用户名称,TTY,from (IP), login@(登录的时间), 后面四项IDLE/JCPU/PCPU/WHAT可以不做关注

 

3)命令# uptime也可以显示出w命令的第一行

2. vmstat命令

当我们用w命令发现当前的系统负载值超过了CPU颗数,我们想要查看CPU运行瓶颈,就可以看看系统中有哪些进程在运行

那么#vmstat命令可以查看出内存、虚拟磁盘交换分区、磁盘、系统、CPU的信息,如下图所示

 

1) # vmstat n1

可以用来每n1秒显示一次

如下图,我们想要每1秒显示一次就可以写# vmstat 1,可以用Ctrl c来终止显示

 

2)# vmstat n1 n2

可以用来每n1秒显示一次,显示n2次

如下图,我们想要每1秒显示一次,总共显示5次,就可以写# vmstat 1 5

 

 

3)上图中显示的信息,我们需要关注如下列

  • r列-run,表示有多少个进程(procs)处于run的状态

例如系统中只有一个CPU,那么每个时刻只有一个进程在使用CPU,如果有多个进程只能排队等待,但是CPU的等候使用过程可以用打电话的例子来理解,如果有十个人在排队打电话,为了公平起见,规定每个人每次通话时间只有1分钟,1分钟结束后只能再次回到排尾等待下次使用电话。

那么r列的数字就表示不论是正在占用CPU的进程还是等待中的进程的全部进程的个数

  • b列-block,表示被CPU以外的资源(如网络、硬盘)等阻断,等待中的进程数量

例如网速慢,一个进程想要发送数据包,但是由于网速慢,无法迅速传输就只能等待

  • swpd-当内存不够用时,系统可以把一部分数据临时放入swap分区去,如果swpd的数据不变还好;如果数据不断变动,那么就表示内存和swap分区在频繁地交换数据,也就说明内存不够用了

  • si、so-与swap有关联,如果swpd这一列在频繁改变,那么si/so也会频繁变动

si-表明多有少的数据多少块(单位为kb)从swap进入到内存

so-表明多有少的数据多少块(单位为kb)从内存进入到swap

  • bi、bo-与磁盘有关,如果这两个数值很大,表明磁盘在频繁的读写,那么必然会造成并列增加(很多进程在等待磁盘)

bi-表明多有少的数据多少块(单位为kb)从磁盘进入到内存,也就是读的数据量的多少

bo-表明多有少的数据多少块(单位为kb)从内存进入到磁盘,也就是写得数据量的多少

  • us-用户CPU时间(非内核进程占用时间,例如运行一些网站或者运行MySQL等)(单位为百分比)。 us的值比较高时,说明用户进程消耗的CPU时间多,如果数据长时间大于50,表示系统负载高不够用

  • sy-系统本身的进程占用CPU的百分比

  • id-CPU空闲的百分比,us+sy+id=100

  • wa- wait,等待CPU的百分比,如果这列数值大,表明CPU不够用

 

3. top命令

可以查看到具体的进程使用资源的情况

敲入top命令,回车,可以看到一个动态的显示结果,每三秒显示一次,按q可以退出top命令,我们只截取一部分来介绍显示出的信息

 

1)第一行的内容和用w命令显示的第一行信息相同,为系统的负载情况

2)第二行为系统中的任务情况,total/running/sleeping/stopped/zombie(zombie任务的意思为主进程被意外终止,其子进程的情况)

3)第三行为CPU使用的百分比,如果按数字1可以用来切换显示所有CPU使用情况的平均值和list出所有CPU的使用情况

  • ni值通常都是0

  • st-被偷走了的CPU百分比,例如服务器做了一些虚拟化,有一些子机也就是虚拟机可能会偷走一部分CPU

  • 重点关注us的数值,如果us长时间在60以上,那么对CPU的损耗比较大

4)第四行为物理内存的情况,通常情况比较关注

  • total-一共有多少

  • free-剩余多少

  • used-使用多少

  • buff/cache

5)第五行为swap的使用情况

6)第五行下面的内容为真正需要关注的,默认情况下进程会按照CPU占用的百分比由大到小排列

  • RES-物理内存大小,单位为kb

  • 如果想要按照使用的内存情况排序,可以按M(大写M),如果想要切换回按CPU排序可以按大写的P

7)# top -c,可以看到具体的命令而不是进程的名字

8)# top -bn1, 可以一次性静态显示所有的进程

一般在写脚本的时候使用

9) # kill PID数值,可以停止进程

 

4. sar命令

可以用来全面分析系统状态,“Linux系统中的瑞士军刀”,这里介绍其用来查看网卡流量的功能

用# yum install -y sysstat 来安装sar命令

注:sar命令如果不加任何参数,系统会自动调用其历史文件/var/log/sa,其历史文件的由来源自于sar命令会每隔10分钟过滤系统的状态并保存在/var/log/sa的目录下,文件的命名规律为sa+日期结尾数字,例如17号的历史文件,就保存为/var/log/sa/sa17,且文件保留期限为一个月;在18号的时候就会生成/var/log/sa/sar17的文件

/var/log/sa/sa17 VS. /var/log/sa/sar17

这两文件的区别在于sa17为一个二进制的文件只能用-f选项来进行加载

而sar17可以用cat/less等工具来查看内容

 

1)查看网卡流量

语法 sar -n DEV n1 n2

这里的n1和n2的意思跟vmstat命令中的类似,用来每n1秒显示一次,显示n2次

如下图,我们想要查看网卡的流量以每秒显示一次,总共显示10次

# sar -n DEV 1 10

  • IFACE列显示网卡名称,如上图有两个网卡lo和ens33

  • rx/txpck/s-每秒接受和发送数据包的数量

rxpck-接受数据包

txpck-发送数据包

rxpck/s的数值如果过大会影响网络的使用情况,数据包在几千还是正常的,上万的话一般就可能会有问题了

  • rx/txkB/s-接收和发送的数据量

 

语法 sar -n DEV -f /var/log/sa/以sa开头的文件名

可以查看到sar命令的历史数据

 

2)# sar -q n1 n2

可以用来查看负载

 

3)# sar -b n1 n2

查看磁盘

主要看最后两列读和写得数值

 

 

5. nload命令

监控网卡流量

安装nload包

yum install epel-release; yum install nload

输入命令 # nload

得到如下信息

第一行显示网卡名字以及IP,网卡总数量,按左右方向键可以看其他网卡,按q退出命令

 

6. 监控io性能

磁盘状态的命令iostat/iotop

在yum install sysstat的时候就会安装上iostat这个命令

1) iostat

可以直接使用cmd # iostat,回车得到如下图

也可以# iostat n1可以每几秒显示几次

和# sar -b得到的信息相同

  • iostat -x

可以显示出非常重要的指标 %util,表示cpu等待磁盘io的时间比,如果这个数字很大表明磁盘的读写能力很差,那么如果读和写两列数字不大则表示磁盘出现了故障,如下图所示

%util:          一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。(https://www.cnblogs.com/bonelee/p/6323587.html

2)iotop

可以查看具体进程的读写

yum install -y iotop

可以动态显示进程使用io的情况

 

 

7. free 命令

可以清楚地查看到磁盘的使用情况

  • free,单位为KB

  • free -m,单位为M

  • free -h, 可以显示出单位

如下图

 

我们从上图可以看到used+free不等于total,这是因为Linux系统会预先分配一些内存给buff和cache

  • buff-缓冲

  • chache-缓存

磁盘读数据到CPU

0000 (磁盘中的数据)-->内存(cache)--> CPU

CPU处理好的数据到磁盘中

00000(CPU)-->内存(buffer)--> 磁盘,因为CPU处理数据的速度远远快过磁盘写入的速度,所以可以先存到buffer中去,在写入到磁盘,这样优化CPU的使用,系统流畅

  • available=free + rest of buff/cache,物理剩余内存是包括free和剩余buff/cache的

  • total= used+free+buff/cache

 

8. PS 命令

ps在man之后的定义,report a snapshot of the current processes

1)ps aux

可以列出系统中所有的进程,静态一次性显示当前进程的状况

 

 

  • ps aux可以加管道符和grep搭配使用,来查看某个进程是否在运行

  • STAT列是我们需要关注的

stat状态的含义,在网上发现了很详细的博客

https://blog.csdn.net/carltraveler/article/details/51393450

进程与线程 http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

注:PID的进程的ID,使用场景为杀死一个进程时 # kill PID; 当系统被黑时,找到非法进程的PID,用# ls -l /proc/PID可以查看到进程在哪里启动的

2)ps -elf

和ps aux差不多

 

9. 查看网络状态

netstat命令,linux作为服务器的操作系统,服务器上的服务需要与客户端进行相互通信,意味着要有监听端口和对外的通信端口,而netstat命令就是可以用来查看TCP/IP的状态

1)netstat -l(listen)np

可以用来监听端口

socket文件同一台服务器两个进程之间的通信

  • netstat -ltnp -只监听tcp端口

  • netstat -lunp-只见他udp端口

2)netstat -an

查看所有的链接状态

TCP三次握手四次挥手

详见于https://www.cnblogs.com/Jessy/p/3535612.html

  • netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

可以查看出所有链接状态的个数

 

上图数据中,我们主要需要关注ESTABLISHED的数量,这个值代表现在有多少客户端与服务器建立连接正在传输数据,一般服务器可以承载1000左右

3) # ss -an和netstat -an作用相似

可以和|grep结合使用,但是不会显示进程的名字

 

10. Linux下抓包

tcpdump命令用来抓包,去查看有什么数据包进来

yum install -y tcpdump

1) tcpdump -n(把ip用数字的形式显示出来,如果不加就显示主机名)n -i (用来指定网卡)网卡(eg,ens33)

可以显示出如下图的信息

 

  • 第一列为时间

  • 第二列为IP地址,前面为源IP地址和端口后面为目的IP地址和端口。我们通常需要关注这一列的信息

  • 最后为包的信息,这一列可以关注下length,在系统受到攻击时,这一列会显示异常(DDoS udp flood攻击)

2)tcpdump port/not port 端口数

可以用来查看指定端口数的包或者查看排除某个端口的包

  • tcpdump port 端口 and host IP地址

可以查看出从某一IP与某一端口进行传输的包

例子,可以写成 # tcpdump -nn -i ens0 port 80 and host 113.107.238.130

那么就会显示出ens0网卡上port 80与113.107.238.130之间传输的包的信息

3)tcpdump -c 包的个数 -w 文件路径

-c参数指定包的数量

-w指定保存的路径

可以写成 tcpdump -nn -i ens0 -c 100 -w(write) /tmp/tcpdump.1

然而我们无法去cat这个保存的文件,因为我们写入的就是网卡中传输的数据包,可以用file来看一些文件的信息或者也可以用tcpdump -r filename来查看文件内容

4)tshark 命令

yum install wireshark

跟tcpdump命令作用相似

# 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

可以用来查看指定网卡80端口web访问的情况,相当于web的访问日志

 

 

  1. Linux网络相关的命令

1)ifconfig命令查看网卡ip,用yum install net-tools来安装

显示结果比 ip addr更加清楚

  • ifconfig -a,可以查看到down掉的网卡

 

2)ifdown 网卡名字,可以断开一个网卡;ifup 网卡名字,恢复网卡连接

一般用于改变了一些网卡设置之后需要重启制定网卡时使用,可是在我们在使用的一个网卡ifdown断开连接之后,需要在服务器主机上恢复连接,可有时服务器不在本地,那么我们就可以使用

# ifdown 网卡名字 && ifup 网卡名字,来执行网卡的重启

 

3)给网卡设置虚拟网卡-以网卡ens33为例, 在lvs和keepalived中会使用到虚拟网卡

首先我们可以先cd到网卡的配置文件/etc/sysconfig/network-scripts

复制网卡cp ifcfg-ens33 ifcfg-ens33\:0, 这里的\为转义

然后编辑网卡vi ifcfg-ens33\:0

改动内容中的name,device & ipaddr

 

最后重启网卡服务,# ifdown ens33 && ifup ens33, 再用ifconfig查看就可以看见新加入的虚拟网卡ens33:0

 

4)如何查看网卡是否连接

  • # mii-tool 网卡名字

如果网卡连接网线,就会如下图显示link ok

如果出现not support或者no link的结果,也可以用# ethtool 网卡名字查看,如果没有连接 link detected就为no

 

 

5)更改主机名字

# hostnamectl set-hostname 主机名

更改过后需要重启才可以显示更改过后的主机名,或者用bash进入到一个子shell

主机名的配置文件在/etc/hostname中

 

6)DNS的配置文件

DNS的配置文件在/etc/resolv.conf

其中的nameserver是在/etc/sysconfig/net-workscripts/ifconfig-ens33中定义的,所以想要对DNS的配置文件做更改可以直接编辑网卡的配置文件,直接编辑/etc/resolv.conf只是暂时的,如果重启网卡原来配置文件的内容会对所做的更改进行覆盖

 

7)/etc/hosts

这个文件存在Windows和linux,在后续的lamp的时候,在访问自定义域名的时候会使用这个文件

hosts文件作用

一个主要的作用是:线下环境模拟,通信双方在同一个局域网内想通过internet上的域名相互访问,则只需要修改自己的/etc/hosts文件内容即可。(https://blog.csdn.net/aempty/article/details/79593625

例如,修改www.baidu.com的ip为127.0.0.1

 

hosts文件的作用相当如DNS,提供IP地址到hostname的对应。早期的互联网计算机少,单机hosts文件里足够存放所有联网计算机。不过随着互联网的发展,这就远远不够了。于是就出现了分布式的DNS系统。由DNS服务器来提供类似的IP地址到域名的对应。具体可以manhosts。

 

Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。/etc/hosts文件通常里面包含这一条记录

 

127.0.0.1   localhost.localdomain  localhost

hosts文件格式是一行一条记录,分别是IP地址 hostnamealiases,三者用空白字符分隔,aliases可选。(http://blog.sina.com.cn/s/blog_605f5b4f0101847z.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值