鸟哥的Linux私房菜基础篇笔记--6

525.free 命令。

(1) free  [-b|-k|-m|-g]  [-t]

       [-b|-k|-m|-g]  指定显示的单位。

       -t  在输出的最终结果中显示物理内存与swap 的总量。

       

第一部分Mem行:
total 内存总数: 900M
used 已经使用的内存数: 317M
free 空闲的内存数: 663M
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 43M
cached Page 缓存内存数:112M

关系:total(900M) = used(317M) + free(663M)

第二部分(-/+ buffers/cache):
(-buffers/cache) used内存数:161M (指的第一部分Mem行中的used – buffers – cached)
(+buffers/cache) free内存数: 818M (指的第一部分Mem行中的free + buffers + cached)

如果第一行的free没有剩多少,但是buffers  和  cached 的数值偏大,那么也没有关系的。说明系统是很有效率的将内存用光了,目的是为了让系统的访问性能加速。

要注意swap的时候量,一般来说,swap 最好不要被使用,尤其swap最好不要被使用超过%20以上,如果你发现swap 的使用量超过%20以上,那么,最好还是买物理内存吧,因为,swap的性能和物理内存实在差很多。

Linux系统为了要加速系统性能,所以会将最常使用的或者是最近使用到的文件数据缓存下来,这样将来系统要使用该文件的时候,就直接由内存中取出,而不需要重新读取硬盘,速度上面当然就会加快了,因此,物理内存被使用光是正常的。

 

526.uptime  命令

(1)查看系统启动时间与工作负载。

     第一个  HHMMSS 的意思是现在的时间

     就是top 的第一行中显示的内容。

 

527.netstat  命令显示结果。

1

 

上面的结果分为两个部分,分别是网络的连接(与网络相关的部分,指的是有源TCP连接,netstat -antup 查看的是没有源的,本地开放端口)以及linux上面的socket 程序相关性部分(与本机的进程自己的相关性(非网络))

我们先来看看因特网连接部分。

Proto : 网络的数据包协议,主要分为TCP UDP 数据包。

Recv-Q :非由用户进程连接到此socket 的复制的总字节数(不理解)。(网上说接受队列)

Send-Q :非由远程主机传送过来的acknowledged 总字节数(不理解)。(网上说发送队列)

Recv-Q Send-Q 一般情况下都是0 ,如果不是0 则表示软件包正在队列中堆积。

LocalAddress :本地的IP端口情况。

ForeignAdd : 远程主机的IP端口情况。

State :连接状态,主要有建立(ESTABLISED)以及监听(LISTEN)

我们看到上面只有一条连接的数据,它的意义是通过TCP数据包的链接,将远程的localhost:61578  链接到本地的localhost:ssh ,这条链接状态是建立(ESTABLISHED)的状态。

 

除了网络上的链接外,其实Linux系统上面的进程是可以接收到不同进程所发送来的信息,那就是Linux上面的socket file socketfile可以沟通两个进程之间的信息,因此进程可以取得对方传送过来的数据。由于有socket file ,因此类似 X Window 这种需要通过网络连接的软件,目前新版的linux就以socket file 来进行窗口界面的联机通信了,上面的socket file 的输出的字段有:

Proto : 一般就是Linux ,我的机器是Unix

RefCnt :连接到此socket 的进程数量。

Flags : 连接的标识。

Type  socket 访问的类型,主要有确认连接的STREAM 与不需要确认的DGRAM 两种。

State  :若为CONNECTED 表示多个进程之间已经建立连接。

Path  : 连接到此socket 的相关程序的路径,或者是相关数据输出的路径。

I-Node :就是这个socket file i节点。

PATH 指向的就是这些进程要交换数据的socket 文件。

 

528.dmesg ,分析内核产生的信息。

(1)系统在开机的时候,内核会去检测系统的硬件,你的某些硬件到底有没有被识别出来,那就与这个时候的检测有关。但是这些检测的过程要不是没有显示在屏幕上,就是在屏幕上飞快的一闪而逝,dmesg 能过将内核的信息都找出来。

(2)所有内核检测的信息,不管是开机时候还是系统运行过程中,反正只要是内核产生的信息都会被记录到内存中的某个保护区段。

 

528.vmstat  命令 ,检测系统资源变化。(CPU/内存/硬盘)

(1)vmstat  可以检测CPU/内存/磁盘输入输出的状态等。

(2)vmstat  -a  [延迟 [次数]]   vmstat  vmstat  -a  显示的内容相同。

     vmstat  -fs   与内存相关

     vmstat  -S  单位  设置显示数据的单位 K/M

     vmstat  -d    与磁盘相关,后面不加值,代表查看的是所有磁盘。

     vmstat  -p  分区      与磁盘分区相关

(3)vmstat  1 3  统计目前主机CPU状态 ,每秒一次,总共3次。

(4)利用vmstat 可以跟踪,你可以使用类似  vmstat 5  代表每5秒更新一次。

5

     

   procs字段(内存字段)的选项为。

   r :等待运行中的进程数量。

   b :不可被唤醒的进程数量。

   这两个选项越多,代表系统越忙碌(因为系统太忙,所以很多进程就无法被执行或一直

   在等待而无法被唤醒。)

   

   memory (内存字段)的选项为。

   swpd :虚拟内存被使用的容量。

   free  :为被使用的内存的容量。

   buff : 用于缓冲存储器。

   cache :用于高速缓存。

   buff cache  是和 free 相同的。

  

   swap (内存交换空间)的选项为。

   si :由磁盘中将数据取出的量。

   so :由于内存不足而将没用到的程序写入到磁盘的swap 的容量中。

   如果si/so 的数值太大,表示内存内的数据经常得在磁盘与内存之间传来传去,系统性

   能会很差

   si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,   要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

    so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

 

  

   io (磁盘读写)的选项为

   bi : 由磁盘写入的块数量 。

   bo :写入到磁盘中的块数量。

   bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小 1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T) 的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

    bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0bibo一般都要接近0  不然就是IO过于频繁,需要调整

  

  system(系统)的选项为

  in :每秒被中断的进程次数

  cs  :每秒钟进行的事件切换次数。

  这两个数值越大,代表系统与接口设备的通信非常频繁,这些接口设备当然包括磁盘、网

  卡、时钟等。

  in 每秒CPU的中断次数,包括时间中断

cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apachenginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

 

  CPU 的选项为 (使用状态貌似是使用率)

  us :非内核层的CPU的使用状态。

  sy :内核层所使用的CPU的使用状态。

  id :闲置的数量。

  wa :等待IO所消耗的CPU数量。

  st  : 被虚拟机所盗用的CPU使用状态。

 us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)

sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

wt 等待IO CPU时间

 

  如果你的系统很慢的话,记得使用vmstat 查看一下,一般来说,如果I/O部分很忙碌的话,你的系统会变得非常慢。

 

关于2>&1

2>&1 是把错误输出导入(合并)到标准输出流中

grep "standard"* > grep.out 2>&1 就是将标准输出与错误输出一并送入grep.out文件中,写文件方式为覆盖写

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值