澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站伍个例证让初专家精晓free命

2019-06-08 作者:服务器运维   |   浏览(128)

6 个例子让初学者掌握 free 命令 | Linux 中国,freelinux

在 Linux 系统上,有时你可能想从命令行快速地了解系统的已使用和未使用的内存空间。如果你是一个 Linux 新手,有个好消息:有一条系统内置的命令可以显示这些信息:free。-- Himanshu Arora
本文导航◈ Linux free 命令07%◈ Q1. 怎么用 free 命令查看已使用和未使用的内存?14%◈ Q2. 如何更改显示的单位呢?44%◈ Q3. 怎么显示可读的结果呢?53%◈ Q4. 怎么让 free 命令以一定的时间间隔持续运行?61%◈ Q5. 怎么使 free 基于 1000 计算内存,而不是 1024?73%◈ Q6. 如何使 free 命令显示每一列的总和?81%◈ 总结89%编译自 |  
 作者 | Himanshu Arora
 译者 | jessie-pang

在 Linux 系统上,有时你可能想从命令行快速地了解系统的已使用和未使用的内存空间。如果你是一个 Linux 新手,有个好消息:有一条系统内置的命令可以显示这些信息:free

在本文中,我们会讲到 free 命令的基本用法以及它所提供的一些重要的功能。文中提到的所有命令和用法都是在 Ubuntu 16.04LTS 上测试过的。

Linux free 命令

让我们看一下 free 命令的语法:

  1. free [options]

free 命令的 man 手册如是说:

free 命令显示了系统的可用和已用的物理内存及交换内存的总量,以及内核用到的缓存空间。这些信息是从 /proc/meminfo 中得到的。

接下来我们用问答的方式了解一下 free 命令是怎么工作的。

Q1. 怎么用 free 命令查看已使用和未使用的内存?

这很容易,您只需不加任何参数地运行 free 这条命令就可以了:

  1. free

这是 free 命令在我的系统上的输出:

view used and available memory using free command

这些列是什么意思呢?

◈ total - 安装的内存的总量(等同于 /proc/meminfo 中的 MemTotal 和 SwapTotal)◈ used - 已使用的内存(计算公式为:used = total - free - buffers - cache)◈ free - 未被使用的内存(等同于 /proc/meminfo 中的 MemFree 和 SwapFree)◈ shared - 通常是临时文件系统使用的内存(等同于 /proc/meminfo 中的 Shmem;自内核 2.6.32 版本可用,不可用则显示为 0)◈ buffers - 内核缓冲区使用的内存(等同于 /proc/meminfo 中的 Buffers)◈ cache - 页面缓存和 Slab 分配机制使用的内存(等同于 /proc/meminfo 中的 Cached 和 Slab)◈ buff/cache - buffers 与 cache 之和◈ available - 在不计算交换空间的情况下,预计可以被新启动的应用程序所使用的内存空间。与 cache 或者 free 部分不同,这一列把页面缓存计算在内,并且不是所有的可回收的 slab 内存都可以真正被回收,因为可能有被占用的部分。(等同于 /proc/meminfo 中的 MemAvailable;自内核 3.14 版本可用,自内核 2.6.27 版本开始模拟;在其他版本上这个值与 free 这一列相同)

Q2. 如何更改显示的单位呢?

如果需要的话,你可以更改内存的显示单位。比如说,想要内存以兆为单位显示,你可以用 -m这个参数:

  1. free -m

free command display metrics change

同样地,你可以用 -b 以字节显示、-k 以 KB 显示、-m 以 MB 显示、-g 以 GB 显示、--tera 以 TB 显示。

Q3. 怎么显示可读的结果呢?

free 命令提供了 -h 这个参数使输出转化为可读的格式。

  1. free -h

用这个参数,free 命令会自己决定用什么单位显示内存的每个数值。例如:

diplsy data fromm free command in human readable form

Q4. 怎么让 free 命令以一定的时间间隔持续运行?

您可以用 -s 这个参数让 free 命令以一定的时间间隔持续地执行。您需要传递给命令行一个数字参数,做为这个时间间隔的秒数。

例如,使 free 命令每隔 3 秒执行一次:

  1. free -s 3

如果您需要 free 命令只执行几次,您可以用 -c 这个参数指定执行的次数:

  1. free -s 3 -c 5

上面这条命令可以确保 free 命令每隔 3 秒执行一次,总共执行 5 次。

注:这个功能目前在 Ubuntu 系统上还存在 问题[1],所以并未测试。

Q5. 怎么使 free 基于 1000 计算内存,而不是 1024?

如果您指定 free 用 MB 来显示内存(用 -m 参数),但又想基于 1000 来计算结果,可以用 --sj 这个参数来实现。下图展示了用与不用这个参数的结果:

How to make free use power of 1000 (not 1024) while displaying memory figures

Q6. 如何使 free 命令显示每一列的总和?

如果您想要 free 命令显示每一列的总和,你可以用 -t 这个参数。

  1. free -t

如下图所示:

How to make free display total of columns

请注意 Total 这一行出现了。

总结

free 命令对于系统管理来讲是个极其有用的工具。它有很多参数可以定制化您的输出,易懂易用。我们在本文中也提到了很多有用的参数。练习完之后,请您移步至 man 手册[2]了解更多内容。


via: 

作者:Himanshu Arora[4] 译者:jessie-pang 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者jessie-pang ?共计翻译:1 篇贡献时间:5 天

推荐文章

< 左右滑动查看相关文章 >

点击图片、输入文章 ID 或识别二维码直达

原文链接请访问“原文链接”获得可点击的文内链接、全尺寸原图和相关文章。

##/proc的意义
在linux查看各种状态,其实质是查看内核中相关进程的数据结构中的项通过工具将其格式化后输出出来。但是内核的数据是绝对不能随意查看或更改的,至少不能直接去修改。所以,在linux上出现了伪文件系统/proc,它是内核中各属性或状态向外提供访问和修改的接口。
##查看进程信息

linux之free

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

1.命令格式:

free [参数]

2.命令功能:

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

3.命令参数:

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

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

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

-g   以GB为单位显示内存使用情况。 

-o  不显示缓冲区调节列。 

-s<间隔秒数>  持续观察内存使用状况。 

-t  显示内存总和列。 

-V  显示版本信息。 

4.使用实例:

实例1:显示内存使用情况

命令:

free

free -g

free -m

输出:

[[email protected] service]# free

             total       used       free     shared    buffers     cached

Mem:      32940112   30841684    2098428          0    4545340   11363424

-/ buffers/cache:   14932920   18007192

Swap:     32764556    1944984   30819572

[[email protected] service]# free -g

             total       used       free     shared    buffers     cached

Mem:            31         29          2          0          4         10

-/ buffers/cache:         14         17

Swap:           31          1         29

[[email protected] service]# free -m

             total       used       free     shared    buffers     cached

Mem:         32168      30119       2048          0       4438      11097

-/ buffers/cache:      14583      17584

Swap:        31996       1899      30097

说明:

下面是对这些数值的解释:

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

第三行(-/ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行是交换分区SWAP的,也就是我们通常所说的虚拟内存。

区别:第二行(mem)的used/free与第三行(-/ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括,内核(OS)使用 Application(X, oracle,etc)使用的 buffers cached.

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory buffers cached。

如本机情况的可用内存为:

18007156=2098428KB 4545340KB 11363424KB

 

接下来解释什么时候内存会被交换,以及按什么方交换。 

当可用内存少于额定值的时候,就会开会进行交换.如何看额定值: 

命令:

cat /proc/meminfo 

输出:

[[email protected] service]# cat /proc/meminfo

MemTotal:     32940112 kB

MemFree:       2096700 kB

Buffers:       4545340 kB

Cached:       11364056 kB

SwapCached:    1896080 kB

Active:       22739776 kB

Inactive:      7427836 kB

HighTotal:           0 kB

HighFree:            0 kB

LowTotal:     32940112 kB

LowFree:       2096700 kB

SwapTotal:    32764556 kB

SwapFree:     30819572 kB

Dirty:             164 kB

Writeback:           0 kB

AnonPages:    14153592 kB

Mapped:          20748 kB

Slab:           590232 kB

PageTables:      34200 kB

NFS_Unstable:        0 kB

Bounce:              0 kB

CommitLimit:  49234612 kB

Committed_AS: 23247544 kB

VmallocTotal: 34359738367 kB

VmallocUsed:    278840 kB

VmallocChunk: 34359459371 kB

HugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0Hugepagesize:     2048 kB

 

交换将通过三个途径来减少系统中使用的物理页面的个数:  

1.减少缓冲与页面cache的大小, 

2.将系统V类型的内存页面交换出去,  

3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。 

事实上,少量地使用swap是不是影响到系统性能的。

 

那buffers和cached都是缓存,两者有什么区别呢?

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。

Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。

Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。

简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.

如果是应用服务器的话,一般只看第二行, buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。

 

实例2:以总和的形式显示内存的使用信息

命令:

  free -t 

输出:

[[email protected] service]#  free -t 

             total       used       free     shared    buffers     cached

Mem:      32940112   30845024    2095088          0    4545340   11364324

-/ buffers/cache:   14935360   18004752Swap:     32764556    1944984   30819572Total:    65704668   32790008   32914660[[email protected] service]#

 

说明:

 

实例3:周期性的查询内存使用信息

命令:

free -s 10

输出:

[[email protected] service]#  free -s 10

             total       used       free     shared    buffers     cached

Mem:      32940112   30844528    2095584          0    4545340   11364380

-/ buffers/cache:   14934808   18005304Swap:     32764556    1944984   30819572

             total       used       free     shared    buffers     cached

Mem:      32940112   30843932    2096180          0    4545340   11364388

-/ buffers/cache:   14934204   18005908Swap:     32764556    1944984   30819572

 

说明:

每10s 执行一次命令

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常...

        在听“”王子“”分享的过程中刚好听到他曾做过性能方面的测试,事后向他请教,他把他在简书写的Linux服务器监控命令的文章发给我让我看看。我这周就在公司的电脑上实操了一把,又在网上学习了其他命令实操了一回,在此展示出来。

澳门新萄京官方网站 1

pstree命令

1.Top查看CPU进程

在 Linux 系统上,有时你可能想从命令行快速地了解系统的已使用和未使用的内存空间。如果你是一个 Linux 新手,有个好消息:有一条系统内置的命令可以显示这些信息:free

选项说明:
  -a:显示进程的命令行
  -c:展开分支
  -h:高亮显示当前正在运行的进程及其父进程
  -p:显示进程的pid,此选项也将展开分之
  -l:允许显示长格式进程

cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"查看CPU名称和大小

在本文中,我们会讲到 free 命令的基本用法以及它所提供的一些重要的功能。文中提到的所有命令和用法都是在 Ubuntu 16.04LTS 上测试过的。

ps命令

2、查看数据库

Linux free 命令

让我们看一下 free 命令的语法:

free [options]

free 命令的 man 手册如是说:

free 命令显示了系统的可用和已用的物理内存及交换内存的总量,以及内核用到的缓存空间。这些信息是从 /proc/meminfo 中得到的。

接下来我们用问答的方式了解一下 free 命令是怎么工作的。

ps aux各列的意义

ps -ef|grep mysqld看看是否有mysqld_safe和mysqld进程

Q1. 怎么用 free 命令查看已使用和未使用的内存?

这很容易,您只需不加任何参数地运行 free 这条命令就可以了:

free

这是 free 命令在我的系统上的输出:

澳门新萄京官方网站 2

view used and available memory using free command

这些列是什么意思呢?

  • total - 安装的内存的总量(等同于 /proc/meminfo 中的 MemTotalSwapTotal
  • used - 已使用的内存(计算公式为:used = total - free - buffers - cache
  • free - 未被使用的内存(等同于 /proc/meminfo 中的 MemFreeSwapFree
  • shared - 通常是临时文件系统使用的内存(等同于 /proc/meminfo 中的 Shmem;自内核 2.6.32 版本可用,不可用则显示为 0
  • buffers - 内核缓冲区使用的内存(等同于 /proc/meminfo 中的 Buffers
  • cache - 页面缓存和 Slab 分配机制使用的内存(等同于 /proc/meminfo 中的 CachedSlab
  • buff/cache - bufferscache 之和
  • available - 在不计算交换空间的情况下,预计可以被新启动的应用程序所使用的内存空间。与 cache 或者 free 部分不同,这一列把页面缓存计算在内,并且不是所有的可回收的 slab 内存都可以真正被回收,因为可能有被占用的部分。(等同于 /proc/meminfo 中的 MemAvailable;自内核 3.14 版本可用,自内核 2.6.27 版本开始模拟;在其他版本上这个值与 free 这一列相同)

  %CPU:表示CPU占用百分比,计算方式是“进程占用CPU时间/CPU总时间”
  %MEM:表示各进程所占物理内存百分比
  VSZ:表示各进程占用的虚拟内存,也就是其在线性地址空间中占用的内存
  RSS:表示各进程占用的实际物理内存,单位为Kb
  TTY:表示属于哪个终端,"?"表示不依赖于终端的进程
  TAT:进程所处的状态
  D:不可中断睡眠
  R:运行中或等待队列中的进程(running/runnable)
  S:可中断睡眠
  T:进程处于stopped状态
  Z:僵尸进程
对于BSD风格的ps选项,进程的状态还会显示下面几个组合信息。
  <:高优先级进程
  N:低优先级进程
  L:该进程在内存中有被锁定的页
  s:表示该进程是session leader,即进程组的首进程。例如管道左边的 进程,shell脚本中的shell进程
  l:表示该进程是一个线程
   :表示是前段进程。前段进程一般来说都是依赖于终端的

3、查看内存

Q2. 如何更改显示的单位呢?

如果需要的话,你可以更改内存的显示单位。比如说,想要内存以兆为单位显示,你可以用 -m 这个参数:

free -m

澳门新萄京官方网站 3

free command display metrics change

同样地,你可以用 -b 以字节显示、-k 以 KB 显示、-m 以 MB 显示、-g 以 GB 显示、--tera 以 TB 显示。

  START:表示进程是何时被创建的
  TIME:表示各进程占用的CPU时间
  COMMAND:表示进程的命令行。如果是内核线程,则使用方括号"[]"包围

free查看内存情况(free –m-m代表下面的是以M为单位)

Q3. 怎么显示可读的结果呢?

free 命令提供了 -h 这个参数使输出转化为可读的格式。

free -h

用这个参数,free 命令会自己决定用什么单位显示内存的每个数值。例如:

澳门新萄京官方网站 4

diplsy data fromm free command in human readable form

ps -elf

列名

Q4. 怎么让 free 命令以一定的时间间隔持续运行?

您可以用 -s 这个参数让 free 命令以一定的时间间隔持续地执行。您需要传递给命令行一个数字参数,做为这个时间间隔的秒数。

例如,使 free 命令每隔 3 秒执行一次:

free -s 3

如果您需要 free 命令只执行几次,您可以用 -c 这个参数指定执行的次数:

free -s 3 -c 5

上面这条命令可以确保 free 命令每隔 3 秒执行一次,总共执行 5 次。

注:这个功能目前在 Ubuntu 系统上还存在 问题,所以并未测试。

选项说明
  -e:输出全部信息
  -f:全格式输出
  -l:长格式输出

说明

Q5. 怎么使 free 基于 1000 计算内存,而不是 1024?

如果您指定 free 用 MB 来显示内存(用 -m 参数),但又想基于 1000 来计算结果,可以用 --sj 这个参数来实现。下图展示了用与不用这个参数的结果:

澳门新萄京官方网站 5

How to make free use power of 1000 (not 1024) while displaying memory figures

各列的意义:
  F:程序的标志位。0表示该程序只有普通权限,4表示具有root超级管理员权 限,1表示该进程被创建的时候只进行了fork,没有进行exec
  S:进程的状态位,注意ps选项加了"-"的是非BSD风格选项,不会有"s""<""N "" "等的状态标识位
  C:CPU的百分比,注意衡量方式是时间
  PRI:进程的优先级,值越小,优先级越高,越早被调度类选中运行
  NI:进程的NICE值,值为-20到19,影响优先级的方式是PRI(new)=PRI(old)
  NI,所以NI为负数的时候,越小将导致进程优先级越高。但是要注意NICE值
    只能影响非实时进程。可以通过 renice xx 22041(xx为nice值 22041进程号)
  ADDR:进程在物理内存中哪个地方
  SZ:进程占用的实际物理内存
  WCHAN:若进程处于睡眠状态,将显示其对应内核线程的名称,若进程为R状 态,则显示"-"
  ps 后grep的问题:

total

Q6. 如何使 free 命令显示每一列的总和?

如果您想要 free 命令显示每一列的总和,你可以用 -t 这个参数。

free -t

如下图所示:

澳门新萄京官方网站 6

How to make free display total of columns

请注意 Total 这一行出现了。

在ps后加上grep筛选目标进程时,总会发现grep自身进程也被显示出来。先解释下为何会如此。
[root@xuexi ~]# ps aux | grep "crond"
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond
root 8275 0.0 0.0 103256 856 pts/2 S 17:07 0:00 grep crond
通过管道将ps结果传递给grep时,管道协调了ps和grep两进程间通信,但管道的本质是进程间数据传递。管道左边的输出数据放入内存,由管道右边的进程读取。假如划分的内存不足以完全存放输出数据,则管道左边的进程将一直等待,直到管道右边取出内存中一部分的数据以让管道左边的进程继续输出,而管道右边的进程在管道左边的进程启动后也立刻启动了,但是它一直处于等待状态,等待接收管道传递来的数据(就像是平时执行命令时不给输入文件将会一直等待输入一样)。

总计物理内存的大小。

总结

free 命令对于系统管理来讲是个极其有用的工具。它有很多参数可以定制化您的输出,易懂易用。我们在本文中也提到了很多有用的参数。练习完之后,请您移步至 man 手册了解更多内容。

【编辑推荐】

也就是说,管道左右两端的进程是同时被创建的(不考虑父进程创建进程消耗的那点时间),但数据传输是有先后顺序的,左边先传,右边后收,所以可能会造成交叉的情况,左边还没执行完,就捕获到了右边的进程信息。在此处体现在ps还没有统计完进程信息时,grep进程就已经被ps抓到了。

used

要将grep自身进程排除在结果之外,方法有二:

已使用的内存数量。

[root@xuexi ~]# ps aux | grep "crond" | grep -v "grep" # 使用-v将grep自己筛选掉
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond

free

[root@xuexi ~]# ps aux | grep "cron[d]"
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond
第二种方法能成功是因为grep进程被ps捕获时的结果是"grep cron[d]",而使用cron[d]匹配时,grep将只能匹配crond,而不能匹配cron 所以"grep cron[d]"被筛选掉了。其实加上其他字符将更容易理解。

可用的内存数量。

[root@xuexi ~]# ps aux | grep "cron[dabc]"
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond

Shared

uptime命令
显示当前时间,已开机运行多少时间,当前有多少用户已登录系统,以及3个平均负载值。
所谓负载率(load),即特定时间长度内,cpu运行队列中的平均进程数(包括线程),一般平均每分钟每核的进程数小于3都认为正常,大于5时负载就已经非常高
在UNIX系统中,运行队列包括cpu正在执行的进程和等待cpu的进程(即所谓的可运行runable)。在Linux系统中,还包括不可中断睡眠态(IO等待)的进程。运行队列中每出现一个进程,load 就加1,进程每退出运行队列,Load就减1。如果是多核cpu,则还要除以核数。
例如,单核cpu上的负载值为"1.73 0.60 7.98"时,表示:

多个进程共享的内存总额。

  最近1分钟:1.73表示平均可运行的进程数,这一分钟要一直不断地执行这1.73个进程。0.73个进程等待该核cpu。

Buffers/cached

  最近5分钟:平均进程数还不足1,表示该核cpu在过去5分钟空闲了40%的时间。

磁盘缓存的大小。

  最近15分钟:7.98表示平均可运行的进程数,这15分钟要一直不断地执行这7.98个进程。

选项

  结合前5分钟的结果,说明前15-前10分钟时间间隔内,该核cpu的负载非常高。

说明

如果是多核cpu,则还要将结果除以核数。例如4核时,某个最近一分钟的负载值为3.73,则意味着有3.73个进程在运行队列中,这些进程可被调度至4核中的任何一个核上运行。最近1分钟的负载值为1.6,表示这一分钟内每核cpu都空闲(1-1.6/4)=60%的时间。所以,load的理想值是正好等于CPU的核数,小于核数的时候表示cpu有空闲,超出核数的时候表示有进程在等待cpu,即系统资源不足

-b

##top、htop、以及iftop命令

以字节为单位显示数据。

top命令查看动态进程状态,默认每5秒刷新一次。

-k

top选项说明:

以千字节(KB)为单位显示数据(缺省值)。

  -d:指定刷新的时间间隔,默认为5秒
  -b:批处理模式,每次刷新分批显示
  -n:指定top刷新几次就退出,可以配合-b使用
  -p:指定监控的pid,指定方式为-pN1 -pN2...或-pN1,N2 [,...]
  -u:指定要监控的用户的进程,可以是uid也可以是user_name

-m

在top动态模式下,按下各种键可以进行不同操作。使用"h"或"?"可以查看相关键的说明。

以兆(MB)为单位显示数据。

  1 :(数字一)表示是否要在top的头部显示出多个cpu信息
  H :表示是否要显示线程,默认不显示
  c,S : c表示是否要展开进程的命令行,S表示显示的cpu时间是否是累积模式,cpu累积模式下已死去的子进程cpu时间会累积到父进程中
  x,y :x高亮排序的列,y表示高亮running进程
  u :仅显示指定用户的进程
  n or #:设置要显示最大的进程数量
  k :杀进程
  q :退出top
  P :以CPU 的使用资源排序显示
  M :以Memory 的使用资源排序显示
  N :以PID 来排序以下是top的一次结果。

-s delay

[root@xuexi ~]# top
top - 17:43:44 up 1 day, 14:16, 2 users, load average: 0.10, 0.06, 0.01
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004348k total, 417928k used, 586420k free, 52340k buffers
Swap: 2047996k total, 0k used, 2047996k free, 243800k cached

该选项将使free持续不断的刷新,每次刷新之间的间隔为delay指定的秒数,如果含有小数点,将精确到毫秒,如0.5为500毫秒,1为一秒。

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND
1 root 20 0 19364 1444 1132 S 0.0 0.1 0:00.96 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:01.28 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.59 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0

对于free命令的输出,只需要关注Mem和-/ buffers/cache的输出结果

第1行:和w命令的第一行一样,也和uptime命令的结果一样。此行各列分别表示"当前时间"、"已开机时长"、"当前在线用户"、"前1、5、15分钟平均负载率"。
第2行:分别表示总进程数、running状态的进程数、睡眠状态的进程数、停止状态进程数、僵尸进程数。
第3-6行:每颗cpu的状况。
  us = user mode
  sy = system mode
  ni = low priority user mode (nice)(用户空间中低优先级进程的cpu占用百分比)
  id = idle task
  wa = I/O waiting
  hi = servicing IRQs(不可中断睡眠,hard interruptible)
  si = servicing soft IRQs(可中断睡眠,soft interruptible)
  st = steal (time given to other DomU instances)(被偷走的cpu时间,一般被虚拟化软件偷走)
第7-8行:从字面意思理解即可。

Mem:该行使从操作系统的角度来看待输出数据的,used(7687500)表示内核(Kernel) Applications buffers cached。free(284624)表示系统还有多少内存可供使用。

  VIRT:虚拟内存总量

-/ buffers/cache:该行则是从应用程序的角度来看输出数据的。其free = 操作系统used buffers cached

  RES:实际内存总量

free -k -s 1.5#以千字节(KB)为单位显示数据,同时每隔1.5刷新输出一次,直到按CTRL C退出

  SHR:共享内存量

df -h查看磁盘空间

  TIME:进程占用的cpu时间(若开启了时间累积模式,则此处显示的是累积时间)

Cat /proc/meminfo查看内存详细使用情况

top命令虽然非常强大,但是太老了。所以有了新生代的top命令htop。htop默认没有安装,需要手动安装。

使用free 命令来显示动态的内存使用信息,free 只是给你大概的内存信息,而 meminfo 提供的信息更加详细。

##vmstat命令
注意vmstat的第一次统计是自开机起的平均值信息,从第二次开始的统计才是指定刷新时间间隔内的资源利用信息,若不指定刷新时间间隔,则默认只显示一次统计信息。

4.设备IO负载的实时监控工具(iostat):主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。

vmstat [-d] [delay [ count]]
vmstat [-f]

iostat -x该选项将用于显示和io相关的扩展数据。

选项说明:

% user :1.05。在用户级(应用程序)执行时产生的CPU使用率

  -f:统计自开机起fork的次数。包括fork、clone、vfork的次数。但不包括exec次数。
  -d:显示磁盘统计信息。
  delay:刷新时间间隔,若不指定,则只统计一次信息就退出vmstat。
  count:总共要统计的次数。
例如,只统计一次信息。

% system :0.35。在系统级(内核)执行时产生的CPU使用率

[root@xuexi ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 583692 52684 244200 0 0 5 3 4 5 0 0 100 0 0
其中各列的意义如下:

% idle :98.08。在CPU空闲并且系统没有未完成的磁盘I/O请求(idle,如果高,说明CPU较空闲,如果持续低于10的话,说明CPU处理能力低,此时存在CPU瓶颈)

Procs

% iowait :0.53。CPU空闲期间系统有未完成的磁盘I/O请求

  r: 等待队列中的进程数

%nice :0.00。(改变进程优先序列操作)操作使用

*  b: 不可中断睡眠的进程数*

%steal :0.00。虚拟CPU的无意识等待时间

  Memory

iostat -d 1 3#仅显示设备的IO负载,其中每隔1秒刷新并输出结果一次,输出3次后iostat退出。

  swpd: 虚拟内存使用总量

iostat -d 1#和上面的命令一样,也是每隔1秒刷新并输出一次,但是该命令将一直输出,直到按CTRL C退出。

  free: 空闲内存量

列名

  buff: buffer占用的内存量(buffer用于缓冲写)

说明

  cache: cache占用的内存量(cache用于缓存读,谐音"快取",即为了加快取数据的速度)  

Blk_read/s

*  Swap*

每秒块(扇区)读取的数量。

si:从磁盘加载到swap分区的数据流量,单位为"kb/s"

Blk_wrtn/s

so: 从swap分区写到磁盘的数据流量,单位为"kb/s"

每秒块(扇区)写入的数量。

IO

Blk_read

  bi: 从块设备接受到数据的速率,单位为blocks/s

总共块(扇区)读取的数量。

*  bo: 发送数据到块设备的速率,单位为blocks/s
System*

Blk_澳门新萄京官方网站伍个例证让初专家精晓free命令,质量监察和控制命令。wrtn

  in: 每秒中断数,包括时钟中断数量

总共块(扇区)写入的数量。

*  cs: 每秒上下文切换次数*

iostat -dx sda 1 3#指定监控的设备名称为sda,该命令的输出结果和上面命令完全相同。

CPU:统计的是cpu时间百分比,具体信息和top的cpu统计列一样

util是设备的利用率。如果它接近100%,通常说明设备能力趋于饱和。

  us: Time spent running non-kernel code. (user time, including nice time)
  sy: Time spent running kernel code. (system time)
  id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
  wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
  st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
还可以统计磁盘的IO信息。统计信息的结果很容易看懂,所以略过。

await是平均每次请求的等待时间。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

##iostat命令
iostat主要统计磁盘或分区的整体使用情况。也可以输出cpu信息,甚至是NFS网络文件系统的信息。同vmstat/sar一样,第一次统计的都是自系统开机起的平均统计信息。

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

iostat [ -c ] [ -d ] [ -n -h ][ -k | -m ] [ -p [device][,...] ] [ interval [ count ] ]

5.Linux的实时监测命令(watch):

选项说明:
  -c:统计cpu信息
  -d:统计磁盘信息
  -n:统计NFS文件系统信息
  -h:使NFS统计信息更人类可读化
  -k:指定以kb/s为单位显示
  -m:指定以mb/s为单位显示
  -p:指定要统计的设备名称
  -y:指定不显示第一次统计信息,即不显示自开机起的统计信息。
  interval:刷新时间间隔
  count:总统计次数
例如:

可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行。该命令最为常用的两个选项是-d和-n,其中-n表示间隔多少秒执行一次"command",-d表示高亮发生变化的位置。

[root@xuexi ~]# iostat
Linux 2.6.32-504.el6.x86_64 (xuexi.longshuai.com) 06/11/2017 _x86_64_ (4 CPU)

watch -d -n 1 'who'#每隔一秒执行一次who命令,以监视服务器当前用户登录的状况

avg-cpu: %user %nice %system %iowait %steal %idle
0.01 0.00 0.03 0.01 0.00 99.96

watch -d -n 1 'df -h; ls -l'监控磁盘的使用状况,以及当前目录下文件的变化状况,包括文件的新增、删除和文件修改日期的更新等。

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.58 39.44 23.14 5557194 3259968
sdb 0.00 0.03 0.00 4256 0
各列的意义都很清晰,从字面即可理解。

6.CPU的实时监控工具(mpstat):该命令主要用于报告当前系统中所有CPU的实时运行状况。

tps:每秒transfer速率(transfers per second),一次对物理设备的IO请求为一个transfer,但多个逻辑请求可能只组成一个transfer
Blk_read/s:每秒读取的block数量
Blk_wrtn/s:每秒写入的block总数
Blk_read:读取的总block数量
Blk_wrtn:写入的总block数量

Mpstat 2 5该命令将每隔2秒输出一次CPU的当前运行状况信息,一共输出5次,如果没有第二个数字参数,mpstat将每隔两秒执行一次,直到按CTRL C退出。

sar命令
sar是一个非常强大的性能分析工具,它可以获取系统的cpu/等待队列/磁盘IO/内存/网络等性能指标。

第一行的末尾给出了当前系统中CPU的数量。后面的表格中则输出了系统当前CPU的使用状况,以下为每列的含义:

功能多的必然结果是选项多,应用复杂,但只要知道一些常用的选项足以。

列名

sar [options] [-o filename] [delay [count] ]
选项说明:
-A:显示系统所有资源运行状况
-b:显示磁盘IO和tranfer速率信息,和iostat的信息一样,是总体IO统计信息
-d:显示磁盘在刷新时间间隔内的活跃情况,可以指定一个或多个设备,和-b不同的是,它显示的是单设备的IO、transfer信息。
      建议配合-p使用显示友好的设备名,否则默认显示带主次设备号的设备名
-P:显示指定的某颗或某几颗cpu的使用情况。指定方式为,-P 0,1,2,3或ALL。
-u:显示每颗cpu整体平均使用情况。-u和-P的区别通过下面的示例很容易区分。
-r:显示内存在刷新时间间隔内的使用情况
-n:显示网络运行状态。后可接DEV/NFS/NFSD/FULL等多种参数。
:DEV表示显示网路接口信息,NFS和NFSD分别表示显示NFS客户端服务端的流量信息,FULL表示显示所有信息。
-q:显示等待队列大小
-o filename:将结果存入到文件中
delay:状态刷新时间间隔
count:总共刷新几次

说明

10.5.1 统计cpu使用情况
[root@server2 ~]# sar -P ALL 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

%user

01:18:49 AM CPU %user %nice %system %iowait %steal %idle
01:18:50 AM all 0.00 0.00 0.25 0.00 0.00 99.75
01:18:50 AM 0 0.00 0.00 0.00 0.00 0.00 100.00
01:18:50 AM 1 0.00 0.00 0.00 0.00 0.00 100.00
01:18:50 AM 2 0.00 0.00 0.00 0.00 0.00 100.00
01:18:50 AM 3 0.00 0.00 0.00 0.00 0.00 100.00

在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100

01:18:50 AM CPU %user %nice %system %iowait %steal %idle
01:18:51 AM all 0.00 0.00 0.00 0.00 0.00 100.00
01:18:51 AM 0 0.00 0.00 0.00 0.00 0.00 100.00
01:18:51 AM 1 0.00 0.00 0.99 0.00 0.00 99.01
01:18:51 AM 2 0.00 0.00 0.00 0.00 0.00 100.00
01:18:51 AM 3 0.00 0.00 0.00 0.00 0.00 100.00

%nice

Average: CPU %user %nice %system %iowait %steal %idle
Average: all 0.00 0.00 0.12 0.00 0.00 99.88
Average: 0 0.00 0.00 0.00 0.00 0.00 100.00
Average: 1 0.00 0.00 0.50 0.00 0.00 99.50
Average: 2 0.00 0.00 0.00 0.00 0.00 100.00
Average: 3 0.00 0.00 0.00 0.00 0.00 100.00
各列的意义就不再赘述了,在前面几个信息查看命令已经解释过多次了。

在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100

在上面的例子中,统计了所有cpu(0,1,2,3共4颗)每秒的状态信息,每秒还进行了一次汇总,即all,最后还对每颗cpu和汇总all计算了平均值。而我们真正需要关注的是最后的average部分的idle值,idle越小,说明cpu处于空闲时间越少,该颗或整体cpu使用率就越高。

%sys

或者直接对整体进行统计。如下:

在internal时间段里,内核时间(%)       (system/total)*100

[root@server2 ~]# sar -u 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

%iowait

01:18:37 AM CPU %user %nice %system %iowait %steal %idle
01:18:39 AM all 0.00 0.00 0.00 0.00 0.00 100.00
01:18:40 AM all 0.00 0.00 0.23 0.00 0.00 99.77
Average: all 0.00 0.00 0.12 0.00 0.00 99.88

在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100

10.5.2 统计内存使用情况

%irq

其中kbdirty表示内存中脏页的大小,即内存中还有多少应该刷新到磁盘的数据。

在internal时间段里,硬中断时间(%)     (irq/total)*100

10.5.3 统计网络流量
第一种方法是查看/proc/net/dev文件。

%soft

 

在internal时间段里,软中断时间(%)     (softirq/total)*100

关注列:receive和transmit分别表示收包和发包,关注每个网卡的bytes即可获得网卡的情况。写一个脚本计算每秒的差值即为网络流量。

%idle

或者使用sar -n命令统计网卡接口的数据。

在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

[root@server2 ~]# sar -n DEV 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

计算公式:

01:51:11 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
01:51:12 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:51:12 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

total_cur=user system nice idle iowait irq softirq

01:51:12 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
01:51:13 AM eth0 0.99 0.99 0.06 0.41 0.00 0.00 0.00
01:51:13 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

total_pre=pre_user pre_system pre_nice pre_idle pre_iowait pre_irq pre_softirq

Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: eth0 0.50 0.50 0.03 0.21 0.00 0.00 0.00
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
各列的意义如下:

user=user_cur – user_pre

rxpck/s:每秒收到的包数量
txpck/s:每秒发送的包数量
rxkB/s:每秒收到的数据,单位为kb
txkB/s:每秒发送的数据,单位为kb
rxcmp/s:每秒收到的压缩后的包数量
txcmp/s:每秒发送的压缩后的包数量
rxmcst/s:每秒收到的多播包数量

total=total_cur-total_pre

查看队列情况
[root@server2 ~]# sar -q
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。

12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
12:10:01 AM 0 446 0.01 0.02 0.05 0
12:20:01 AM 0 445 0.02 0.03 0.05 0
12:30:01 AM 0 446 0.00 0.01 0.05 0
Average: 0 446 0.01 0.02 0.05 0
每列意义解释:

mpstat -P ALL 2 3#-P ALL表示打印所有CPU的数据,这里也可以打印指定编号的CPU数据,如-P 0(CPU的编号是0开始的)

runq-sz:等待队列的长度,不包括正在运行的进程
plist-sz:任务列表中的进程数量,即总任务数
ldavg-N:过去1分钟、5分钟、15分钟内系统的平均哎
blocked:当前因为IO等待被阻塞的任务数量

7.虚拟内存的实时监控工具(vmstat):用来获得UNIX系统有关进程、虚存、页面交换空间及CPU活动的信息。这些信息反映了系统的负载情况。vmstat首次运行时显示自系统启动开始的各项统计信息,之后运行vmstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

统计磁盘IO情况
[root@server2 ~]# sar -d -p 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

vmstat 1 3#这是vmstat最为常用的方式,其含义为每隔1秒输出一条,一共输出3条后程序退出。

12:53:06 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:53:07 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

下面将给出输出表格中每一列的含义说明:

12:53:07 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:53:08 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

有关进程的信息有:(procs)

Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
分别统计的是12:53:06到12:53:07和12:53:07到12:53:08这两秒的IO使用情况。

r:  在就绪状态等待的进程数。

各列的意义如下:

b: 在等待状态等待的进程数。

tps:transfer per second,每秒的transfer速率,一次物理IO请求算一次transfer,但多次逻辑IO请求可能组合起来才算一次transfer。
rd_sec/s:每秒读取的扇区数,扇区大小为512字节。
wr_sec/s:每秒写入的扇区数。
avgrq-sz:请求写入设备的平均大小,单位为扇区。(The average size (in sectors) of the requests that were issued to the device)
avgqu-sz:请求写入设备的平均队列长度。(The average queue length of the requests that were issued to the device.)
await:写入设备的IO请求的平均(消耗)时间,单位微秒(The average time for I/O requests issued to the device to be served.)
svctm:不可信的列,该列未来将被移除,所以不用管
%util:最重要的一列,显示的是设备的带宽情况。该列若接近100%,说明磁盘速率饱和了。

有关内存的信息有:(memory)

10.6 free命令
free用于查看内存使用情况。CentOS 6和CentOS 7上显示格式不太一样。

swpd:  正在使用的swap大小,单位为KB。

free [options]
选项说明:
-h:人类可读方式显式单位
-m:以MB为显示单位
-w:将buffers和cache分开单独显示。只对CentOS 7上有效
-s:动态查看内存信息时的刷新时间间隔
-c:一共要刷新多少次退出free
以下以CentOS 7上的free结果说明各列的意义。

free:    空闲的内存空间。

[root@server2 ~]# free -m
total used free shared buff/cache available
Mem: 1824 131 1286 8 407 1511
Swap: 1999 0 1999
Mem和Swap分别表示物理内存和交换分区的使用情况。

buff:    已使用的buff大小,对块设备的读写进行缓冲。

total:总内存空间
used:已使用的内存空间。该值是total-free-buffers-cache的结果
free:未使用的内存空间
shared:/tmpfs总用的内存空间。对内核版本有要求,若版本不够,则显示为0。
buff/cache:buffers和cache的总占用空间
available:可用的内存空间。即程序启动时,将认为可用空间有这么多。可用的内存空间为free buffers cache。
所以available才是真正需要关注的可使用内存空间量。

cache: 已使用的cache大小,文件系统的cache。

使用-w可以将buffers/cache分开显示。

有关页面交换空间的信息有:(swap)

[root@server2 ~]# free -w -m
total used free shared buffers cache available
Mem: 1824 131 1286 8 0 406 1511
Swap: 1999 0 1999
还可以动态统计内存信息,例如每秒统计一次,统计2次。

si:  交换内存使用,由磁盘调入内存。

[root@server2 ~]# free -w -m -s 1 -c 2
total used free shared buffers cache available
Mem: 1824 130 1287 8 0 406 1512
Swap: 1999 0 1999

so: 交换内存使用,由内存调入磁盘。

total used free shared buffers cache available
Mem: 1824 130 1287 8 0 406 1512
Swap: 1999 0 1999
以下是CentOS 6上的free结果。

有关IO块设备的信息有:(io)

[root@xuexi ~]# free -m
total used free shared buffers cached
Mem: 980 415 565 0 53 239
澳门新萄京官方网站,-/ buffers/cache: 121 859
Swap: 1999 0 1999
在此结果中,"-/ buffers/cache"的free列才是真正可用的内存空间了,即CentOS 7上的available列。

bi:  从块设备读入的数据总量(读磁盘) (KB/s)

一般来说,内存可用量的范围低于20%应该要引起注意了。

bo: 写入到块设备的数据总理(写磁盘) (KB/s)

 

有关故障的信息有:(system)

摘抄自longshuai:

in: 在指定时间内的每秒中断次数。

sy: 在指定时间内每秒系统调用次数。

cs: 在指定时间内每秒上下文切换的次数。

有关CPU的信息有:(cpu)

us:  在指定时间间隔内CPU在用户态的利用率。

sy:  在指定时间间隔内CPU在核心态的利用率。

id:  在指定时间间隔内CPU空闲时间比。

wa: 在指定时间间隔内CPU因为等待I/O而空闲的时间比。

vmstat 可以用来确定一个系统的工作是受限于CPU还是受限于内存:如果CPU的sy和us值相加的百分比接近100%,或者运行队列(r)中等待的进程数总是不等于0,且经常大于4,同时id也经常小于40,则该系统受限于CPU;如果bi、bo的值总是不等于0,则该系统受限于内存。

8.当前运行进程的实时监控工具(pidstat):主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。

选项

说明

-l

显示该进程和CPU相关的信息(command列中可以显示命令的完整路径名和命令的参数)。

-d

显示该进程和设备IO相关的信息。

-r

显示该进程和内存相关的信息。

-w

显示该进程和任务时间片切换相关的信息。

-t

显示在该进程内正在运行的线程相关的信息。

-p

后面紧跟着带监控的进程id或ALL(表示所有进程),如不指定该选项,将监控当前系统正在运行的所有进程。

pidstat -p 1 2 3 -l监控pid为1(init)的进程的CPU资源使用情况,其中每隔3秒刷新并输出一次,3次后程序退出。

%usr:该进程在用户态的CPU使用率。

%system:该进程在内核态(系统级)的CPU使用率。

%CPU:该进程的总CPU使用率,如果在SMP环境下,该值将除以CPU的数量,以表示每CPU的数据。

CPU: 该进程所依附的CPU编号(0表示第一个CPU)。

pidstat -p 1 2 3 -d监控pid为1(init)的进程的设备IO资源负载情况,其中每隔2秒刷新并输出一次,3次后程序退出。

kB_rd/s:该进程每秒的字节读取数量(KB)。

kB_wr/s:该进程每秒的字节写出数量(KB)。

kB_ccwr/s: 该进程每秒取消磁盘写入的数量(KB)。

pidstat -p 1 2 3 -r监控pid为1(init)的进程的内存使用情况,其中每隔2秒刷新并输出一次,3次后程序退出。

%MEM:该进程的内存使用百分比。

pidstat -p 1 2 3 -w监控pid为1(init)的进程任务切换情况,其中每隔2秒刷新并输出一次,3次后程序退出。

cswch/s:每秒任务主动(自愿的)切换上下文的次数。主动切换是指当某一任务处于阻塞等待时,将主动让出自己的CPU资源。

nvcswch/s:每秒任务被动(不自愿的)切换上下文的次数。被动切换是指CPU分配给某一任务的时间片已经用完,因此将强迫该进程让出CPU的执行权。

pidstat -p 1 2 3 -tr监控pid为1(init)的进程及其内部线程的内存(r选项)使用情况,其中每隔2秒刷新并输出一次,3次后程序退出。需要说明的是,如果-t选项后面不加任何其他选项,缺省监控的为CPU资源。结果中黄色高亮的部分表示进程和其内部线程是树状结构的显示方式。

TGID: 线程组ID。TID: 线程ID。

以上监控不同资源的选项可以同时存在,这样就将在一次输出中输出多种资源的使用情况,如:pidstat -p 1 -dr。

9.报告磁盘空间使用状况(df):

df -h该命令最为常用的选项就是-h,该选项将智能的输出数据单位,以便使输出的结果更具可读性。

10.评估磁盘的使用状况(du):

选项

说明

-a

包括了所有的文件,而不只是目录。

-b

以字节为计算单位。

-k

以千字节(KB)为计算单位。

-m

以兆字节(MB)为计算单位。

-h

是输出的信息更易于阅读。

-s

只显示工作目录所占总空间。

--exclude=PATTERN

排除掉符合样式的文件,Pattern就是普通的Shell样式,?表示任何一个字符,*表示任意多个字符。

--max-depth=N

从当前目录算起,目录深度大于N的子目录将不被计算,该选项不能和s选项同时存在。

du --max-depth=1 -h仅显示子一级目录的信息。

*du -sh ./**#获取当前目录下所有子目录所占用的磁盘空间大小。

du --exclude=Te -sh ./*在当前目录下,排除目录名模式为Te*的子目录(./Test),输出其他子目录占用的磁盘空间大小。*

本文由澳门新萄京官方网站发布于服务器运维,转载请注明出处:澳门新萄京官方网站伍个例证让初专家精晓free命

关键词: