目录

各指标查看总结

CPU 性能工具

内存性能工具

​磁盘 I/O 性能工具

网络性能工具

基准测试工具

CPU相关命令

ps

top

vmstat

pidstat

sar

kill

内存相关命令

free

pmap

IO相关命令

df

网络相关命令

netstat


各指标查看总结

CPU 性能工具

首先,从 CPU 的角度来说,主要的性能指标就是 CPU 的使用率、上下文切换以及 CPU Cache 的命中率等。下面这张图就列出了常见的 CPU 性能指标。

从这些指标出发,再把 CPU 使用率,划分为系统和进程两个维度,我们就可以得到,下面这个
CPU 性能工具速查表。注意,因为每种性能指标都可能对应多种工具,我在每个指标的说明中,
都帮你总结了这些工具的特点和注意事项。

内存性能工具

接着我们来看内存方面。从内存的角度来说,主要的性能指标,就是系统内存的分配和使用、进
程内存的分配和使用以及 SWAP 的用量。下面这张图列出了常见的内存性能指标。

磁盘 I/O 性能工具

接下来,从文件系统和磁盘 I/O 的角度来说,主要性能指标,就是文件系统的使用、缓存和缓冲
区的使用,以及磁盘 I/O 的使用率、吞吐量和延迟等。下面这张图列出了常见的 I/O 性能指标。

网络性能工具

从网络的角度来说,主要性能指标就是吞吐量、响应时间、连接数、丢包数等。根据 TCP/IP 网络协议栈的原理,我们可以把这些性能指标,进一步细化为每层协议的具体指标。这里同样用一张图,分别从链路层、网络层、传输层和应用层,列出了各层的主要指标。

基准测试工具

除了性能分析外,很多时候,我们还需要对系统性能进行基准测试。比如:

在文件系统和磁盘 I/O 模块中,我们使用 fio 工具,测试了磁盘 I/O 的性能。
在网络模块中,我们使用 iperf、pktgen 等,测试了网络的性能。
而在很多基于 Nginx 的案例中,我们则使用 ab、wrk 等,测试 Nginx 应用的性能。
除了这些工具外,对于 Linux 的各个子系统来说,还有很多其他的基准测试工具可能会用到。下面这张图,是 Brendan Gregg 整理的 Linux 基准测试工具图谱,可以保存下来,在需要时参考。

CPU相关命令

ps

Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

语法

ps [options] [--help]

参数:

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令

查找指定进程格式:ps -ef | grep 进程关键字
例如显示 php 的进程:# ps -ef | grep php
root       794     1  0  2020 ?        00:00:52 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data   951   794  0  2020 ?        00:24:15 php-fpm: pool www
www-data   953   794  0  2020 ?        00:24:14 php-fpm: pool www
www-data   954   794  0  2020 ?        00:24:29 php-fpm: pool www
...
显示进程信息:# ps -A
PID TTY     TIME CMD1 ?    00:00:02 init2 ?    00:00:00 kthreadd3 ?    00:00:00 migration/04 ?    00:00:00 ksoftirqd/05 ?    00:00:00 watchdog/06 ?    00:00:00 events/07 ?    00:00:00 cpuset8 ?    00:00:00 khelper9 ?    00:00:00 netns10 ?    00:00:00 async/mgr11 ?    00:00:00 pm12 ?    00:00:00 sync_supers13 ?    00:00:00 bdi-default14 ?    00:00:00 kintegrityd/015 ?    00:00:02 kblockd/016 ?    00:00:00 kacpid17 ?    00:00:00 kacpi_notify18 ?    00:00:00 kacpi_hotplug19 ?    00:00:27 ata/0
……省略部分结果
30749 pts/0  00:00:15 gedit
30886 ?    00:01:10 qtcreator.bin
30894 ?    00:00:00 qtcreator.bin
31160 ?    00:00:00 dhclient
31211 ?    00:00:00 aptd
31302 ?    00:00:00 sshd
31374 pts/2  00:00:00 bash
31396 pts/2  00:00:00 ps
显示指定用户信息# ps -u root //显示root进程用户信息PID TTY     TIME CMD1 ?    00:00:02 init2 ?    00:00:00 kthreadd3 ?    00:00:00 migration/04 ?    00:00:00 ksoftirqd/05 ?    00:00:00 watchdog/06 ?    00:00:00 events/07 ?    00:00:00 cpuset8 ?    00:00:00 khelper9 ?    00:00:00 netns10 ?    00:00:00 async/mgr11 ?    00:00:00 pm12 ?    00:00:00 sync_supers13 ?    00:00:00 bdi-default14 ?    00:00:00 kintegrityd/015 ?    00:00:02 kblockd/016 ?    00:00:00 kacpid
……省略部分结果
30487 ?    00:00:06 gnome-terminal
30488 ?    00:00:00 gnome-pty-helpe
30489 pts/0  00:00:00 bash
30670 ?    00:00:00 debconf-communi
30749 pts/0  00:00:15 gedit
30886 ?    00:01:10 qtcreator.bin
30894 ?    00:00:00 qtcreator.bin
31160 ?    00:00:00 dhclient
31211 ?    00:00:00 aptd
31302 ?    00:00:00 sshd
31374 pts/2  00:00:00 bash
31397 pts/2  00:00:00 ps
显示所有进程信息,连同命令行# ps -ef //显示所有命令,连带命令行
UID    PID PPID C STIME TTY     TIME CMD
root     1   0 0 10:22 ?    00:00:02 /sbin/init
root     2   0 0 10:22 ?    00:00:00 [kthreadd]
root     3   2 0 10:22 ?    00:00:00 [migration/0]
root     4   2 0 10:22 ?    00:00:00 [ksoftirqd/0]
root     5   2 0 10:22 ?    00:00:00 [watchdog/0]
root     6   2 0 10:22 ?    /usr/lib/NetworkManager
……省略部分结果
root   31302 2095 0 17:42 ?    00:00:00 sshd: root@pts/2
root   31374 31302 0 17:42 pts/2  00:00:00 -bash
root   31400   1 0 17:46 ?    00:00:00 /usr/bin/python /usr/sbin/aptd
root   31407 31374 0 17:48 pts/2  00:00:00 ps -ef

top

Linux top命令用于实时显示 process 的动态。

使用权限:所有使用者。

语法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

参数说明:

d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

第一行,任务队列信息,同 uptime 命令的执行结果

系统时间:07:27:05

运行时间:up 1:57 min,

当前登录用户:  3 user

负载均衡(uptime)  load average: 0.00, 0.00, 0.00

average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

第二行,Tasks — 任务(进程)

总进程:150 total, 运行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie

第三行,cpu状态信息

0.0%us【user space】— 用户空间占用CPU的百分比。

0.3%sy【sysctl】— 内核空间占用CPU的百分比。

0.0%ni【】— 改变过优先级的进程占用CPU的百分比

99.7%id【idolt】— 空闲CPU百分比

0.0%wa【wait】— IO等待占用CPU的百分比

0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比

0.0%si【Software Interrupts】— 软中断占用CPU的百分比

第四行,内存状态

1003020k total,   234464k used,   777824k free,    24084k buffers【缓存的内存量】

第五行,swap交换分区信息

2031612k total,      536k used,  2031076k free,   505864k cached【缓冲的交换区总量】

备注:

可用内存=free + buffer + cached

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,

第四行中空闲内存总量(free)是内核还未纳入其管控范围的数量。

纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

第六行,空行

第七行以下:各进程(任务)的状态监控

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

详解

VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来

DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。

top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。

内部命令如下:

s – 改变画面更新频率

l – 关闭或开启第一部分第一行 top 信息的表示

t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示

m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

N – 以 PID 的大小的顺序排列表示进程列表

P – 以 CPU 占用率大小的顺序排列进程列表

M – 以内存占用率大小的顺序排列进程列表

h – 显示帮助

n – 设置在进程列表所显示进程的数量

q – 退出 top

Ctrl+L:擦除并且重写屏幕

K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。

i:忽略闲置和僵死进程。这是一个开关式命令。

r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。

S:切换到累计模式。

s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。

f或者F:从当前显示中添加或者删除项目。

o或者O:改变显示项目的顺序

c:切换显示命令名称和完整命令行。

T:根据时间/累计时间进行排序。

W:将当前设置写入~/.toprc文件中。

显示进程信息# top显示完整命令# top -c以批处理模式显示程序信息# top -b以累积模式显示程序信息# top -S设置信息更新次数top -n 2//表示更新两次后终止更新显示
设置信息更新时间# top -d 3//表示更新周期为3秒
显示指定的进程信息# top -p 139//显示进程号为139的进程信息,CPU、内存占用率等
显示更新十次后退出top -n 10使用者将不能利用交谈式指令来对行程下命令top -s

vmstat

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

语法

vmstat (选项)  (参数)

选项

-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表格方式显示事件计数器和内存状态;
-d:报告磁盘状态;
-p:显示指定的硬盘分区状态;
-S:输出信息的单位。

参数

事件间隔:状态信息刷新的时间间隔;
次数:显示报告的次数。

实例

vmstat 3
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    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0
 0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0
 0  0    320  42188 167336 1534392    0    0     0    19 1002   44  0  0 100  0  0
 0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0
 0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0

字段说明:

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(现在的Linux版本块的大小为1kb)

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: 空闲时间百分比

pidstat

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

pidstat 的用法:

pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
  

[root@VM_2_4_centos ~]# pidstat -help
Usage: pidstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -C <command> ] [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -t ] [ -u ] [ -V ] [ -w ]
[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]

常用的参数:

-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数

示例一:查看所有进程的 CPU 使用情况( -u -p ALL)
pidstat
pidstat -u -p ALL
pidstat 和 pidstat -u -p ALL 是等效的。
pidstat 默认显示了所有进程的cpu使用率。[root@VM_2_4_centos ~]# pidstat
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:29:28 PM       PID    %usr %system  %guest    %CPU   CPU  Command
05:29:28 PM         1    0.00    0.00    0.00    0.00     4  init
05:29:28 PM         3    0.00    0.00    0.00    0.00     0  migration/0
05:29:28 PM         4    0.00    0.00    0.00    0.00     0  ksoftirqd/0
05:29:28 PM         6    0.00    0.00    0.00    0.00     0  watchdog/0
05:29:28 PM         7    0.00    0.00    0.00    0.00     1  migration/1
05:29:28 PM         9    0.00    0.00    0.00    0.00     1  ksoftirqd/1
05:29:28 PM        10    0.00    0.00    0.00    0.00     1  watchdog/1
05:29:28 PM        11    0.00    0.00    0.00    0.00     2  migration/2
05:29:28 PM        13    0.00    0.00    0.00    0.00     2  ksoftirqd/2
05:29:28 PM        14    0.00    0.00    0.00    0.00     2  watchdog/2
05:29:28 PM        15    0.00    0.00    0.00    0.00     3  migration/3
05:29:28 PM        17    0.00    0.00    0.00    0.00     3  ksoftirqd/3
05:29:28 PM        18    0.00    0.00    0.00    0.00     3  watchdog/3
05:29:28 PM        19    0.00    0.00    0.00    0.00     4  migration/4
05:29:28 PM        21    0.00    0.00    0.00    0.00     4  ksoftirqd/4
05:29:28 PM        22    0.00    0.00    0.00    0.00     4  watchdog/4
05:29:28 PM        23    0.00    0.00    0.00    0.00     5  migration/5
05:29:28 PM        25    0.00    0.00    0.00    0.00     5  ksoftirqd/5
05:29:28 PM        26    0.00    0.00    0.00    0.00     5  watchdog/5详细说明
PID:进程ID
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令
示例二: cpu使用情况统计(-u)
pidstat -u
使用-u选项,pidstat将显示各活动进程的cpu使用统计,执行”pidstat -u”与单独执行”pidstat”的效果一样。示例三: 内存使用情况统计(-r)
pidstat -r
使用-r选项,pidstat将显示各活动进程的内存使用统计:[root@VM_2_4_centos ~]# pidstat -r
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:30:53 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
05:30:53 PM         1      0.00      0.00   21392    652   0.00  init
05:30:53 PM       526      0.00      0.00   12848    576   0.00  udevd
05:30:53 PM       832      0.00      0.00    6120     88   0.00  agetty
05:30:53 PM       980      0.00      0.00   95244    720   0.00  auditd
05:30:53 PM       996      0.00      0.00  254004   5476   0.02  rsyslogd
05:30:53 PM      1048      0.02      0.00  592936  18728   0.06  YDService
05:30:53 PM      1097      0.00      0.00   23448    240   0.00  dbus-daemon
05:30:53 PM      1126      0.00      0.00    6124    112   0.00  acpid
05:30:53 PM      1236      0.01      0.00   82992   1088   0.00  master
05:30:53 PM      1242      0.00      0.00  102040   4052   0.01  sshd
05:30:53 PM      1251      0.00      0.00  110712   2260   0.01  bash
05:30:53 PM      1254      0.30      0.00  118452   1028   0.00  crond
05:30:53 PM      1263      0.00      0.00   83244   1460   0.00  qmgr
05:30:53 PM      1271      0.00      0.00   23120    216   0.00  atd
05:30:53 PM      1384      0.00      0.00    6108     88   0.00  mingetty
05:30:53 PM      1386      0.00      0.00    6108     96   0.00  mingetty
05:30:53 PM      1388      0.00      0.00    6108     92   0.00  mingetty
05:30:53 PM      1390      0.00      0.00    6108     92   0.00  mingetty
05:30:53 PM      1392      0.00      0.00    6108   2128   0.01  mingetty
05:30:53 PM      1394      0.00      0.00    6108     88   0.00  mingetty
05:30:53 PM      6722      0.00      0.00  149772   7564   0.02  barad_agent
05:30:53 PM      6726      0.14      0.00  152684   9320   0.03  barad_agentPID:进程标识符
Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
VSZ:虚拟地址大小,虚拟内存的使用KB
RSS:常驻集合大小,非交换区五里内存使用KB
Command:task命令名示例四:显示各个进程的IO使用情况(-d)
pidstat -d[root@VM_2_4_centos ~]# pidstat -d
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:31:26 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
05:31:26 PM         1      1.79     15.40      0.33  init
05:31:26 PM       127      0.00      0.00      0.00  khugepaged
05:31:26 PM       438      0.00      2.11      0.00  kjournald
05:31:26 PM       526      0.00      0.00      0.00  udevd
05:31:26 PM       790      0.00      1.85      0.00  kjournald
05:31:26 PM       832      0.00      0.00      0.00  agetty
05:31:26 PM       980      0.00      0.46      0.00  auditd
05:31:26 PM       996      0.00      0.17      0.00  rsyslogd
05:31:26 PM      1048      0.00      0.00      0.00  YDService
05:31:26 PM      1126      0.00      0.00      0.00  acpid
05:31:26 PM      1236      0.00      0.00      0.00  master
05:31:26 PM      1242      0.00      0.00      0.00  sshd
05:31:26 PM      1251      0.00      0.00      0.00  bash
05:31:26 PM      1254      0.00      0.00      0.00  crond
05:31:26 PM      1263      0.00      0.00      0.00  qmgr
05:31:26 PM      1271      0.00      0.00      0.00  atd
05:31:26 PM      1384      0.00      0.00      0.00  mingetty
05:31:26 PM      1392      0.00      0.00      0.00  mingetty
05:31:26 PM      6722      0.00      0.00      0.00  barad_agent
05:31:26 PM      6726      0.00      0.01      0.00  barad_agent报告IO统计显示以下信息:PID:进程id
kB_rd/s:每秒从磁盘读取的KB
kB_wr/s:每秒写入磁盘KB
kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
COMMAND:task的命令名示例五:显示每个进程的上下文切换情况(-w)[root@VM_2_4_centos ~]# pidstat -w -p 10154
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:32:37 PM       PID   cswch/s nvcswch/s  Command
05:32:37 PM     10154      0.00      0.00  zabbix_agentd
PID:进程id
Cswch/s:每秒主动任务上下文切换数量
Nvcswch/s:每秒被动任务上下文切换数量
Command:命令名示例六:显示选择任务的线程的统计信息外的额外信息 (-t)[root@VM_2_4_centos ~]# pidstat -t -p 10154
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:33:21 PM      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
05:33:21 PM     10154         -    0.00    0.00    0.00    0.00     2  zabbix_agentd
05:33:21 PM         -     10154    0.00    0.00    0.00    0.00     2  |__zabbix_agentdTGID:主线程的表示
TID:线程id
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令示例七:pidstat -T
pidstat -T TASK
pidstat -T CHILD
pidstat -T ALL
TASK表示报告独立的task。
CHILD关键字表示报告进程下所有线程统计信息。
ALL表示报告独立的task和task下面的所有线程。注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。[root@VM_2_4_centos ~]# pidstat -T ALL -p 10154
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:34:13 PM       PID    %usr %system  %guest    %CPU   CPU  Command
05:34:13 PM     10154    0.00    0.00    0.00    0.00     2  zabbix_agentd05:34:13 PM       PID    usr-ms system-ms  guest-ms  Command
05:34:13 PM     10154         0         0         0  zabbix_agentd
PID:进程id
Usr-ms:任务和子线程在用户级别使用的毫秒数。
System-ms:任务和子线程在系统级别使用的毫秒数。
Guest-ms:任务和子线程在虚拟机(running a virtual processor)使用的毫秒数。
Command:命令名

sar

sar(SYstem ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况,系统调用的使用情况,磁盘I/O,CPU效率,内存使用状况,进程活动及IPC有关的活动;

语法格式

sar [ 选项 ] [ <时间间隔> [ <次数> ] ]

sar -h 显示:

-A:所有报告的总和

-b:显示I/O和传递速率的统计信息

-B:显示换页状态

-d:输出每一块磁盘的使用信息

-e:设置显示报告的结束时间

-f:从制定的文件读取报告

-i:设置状态信息刷新的间隔时间

-P:报告每个CPU的状态

-R:显示内存状态

–u:输出cpu使用情况和统计信息

–v:显示索引节点、文件和其他内核表的状态

-w:显示交换分区的状态

-x:显示给定进程的装

-r:报告内存利用率的统计信息

使用总结

默认监控: sar 1 1     //  CPU和IOWAIT统计状态 
(1) sar -b 1 1        // IO传送速率
(2) sar -B 1 1        // 页交换速率
(3) sar -c 1 1        // 进程创建的速率
(4) sar -d 1 1        // 块设备的活跃信息
(5) sar -n DEV 1 1    // 网路设备的状态信息
(6) sar -n SOCK 1 1   // SOCK的使用情况
(7) sar -n ALL 1 1    // 所有的网络状态信息
(8) sar -P ALL 1 1    // 每颗CPU的使用状态信息和IOWAIT统计状态 
(9) sar -q 1 1        // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 1 1      // 内存和swap空间使用情况
(11) sar -R 1 1       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 1 1       // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 1 1       // inode, file and other kernel tablesd的状态信息
(14) sar -w 1 1       // 每秒上下文交换的数目
(15) sar -W 1 1       // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 1 1  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 1 1       // TTY设备的活动状态
(18) 将输出到文件(-o)和读取记录信息(-f)

1.查看CPU使用情况  sar -u

sar 1 3  或 sar -u 1 3

%user   用户空间的CPU使用

%nice   改变过优先级的进程的CPU使用率

%system   内核空间的CPU使用率

%iowait   CPU等待IO的百分比

%steal   虚拟机的虚拟机CPU使用的CPU

%idle   空闲的CPU

在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。

2.将统计结果保存到文件 sar -o  &  sar -f

sar -o test 1 3   #保存
sar -f test       #查看

3.查看平均负载  sar -q

sar -q 1 3

runq-sz    运行队列的长度(等待运行的进程数,每核的CP不能超过3个)

plist-sz   进程列表中的进程(processes)和线程数(threads)的数量

ldavg-1  最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推

ldavg-5   最后5分钟的CPU平均负载

ldavg-15  最后15分钟的CPU平均负载

blocked

4.查看内存使用情况  sar -r

sar -r 1 3

kbmemfree   空闲的物理内存大小

kbmemused   使用中的物理内存大小

%memused  物理内存使用率

kbbuffers  内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

kbcached  缓存的文件大小

kbcommit   保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)

commit   这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值

kbactive

kbinact

kbdirty

5.查看系统swap分区统计情况  sar -W

sar -W 1 3

pswpin/s    每秒从交换分区到系统的交换页面(swap page)数量

pswpott/s   每秒从系统交换到swap的交换页面(swap page)的数量

6.查看IO和传递速率  sar -b

sar -b 1 3

tps  磁盘每秒钟的IO总数,等于iostat中的tps

rtps  每秒钟从磁盘读取的IO总数

wtps  每秒钟从写入到磁盘的IO总数

bread/s  每秒钟从磁盘读取的块总数

bwrtn/s  每秒钟此写入到磁盘的块总数

7.查看磁盘使用情况  sar -d

sar -d

DEV  磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接

tps  每秒I/O的传输总数

rd_sec/s  每秒读取的扇区的总数

wr_sec/s  每秒写入的扇区的总数

avgrq-sz  平均每次次磁盘I/O操作的数据大小(扇区)

avgqu-sz  磁盘请求队列的平均长度

await  从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间

svctm  I/O的服务处理时间,即不包括请求队列中的时间

%util  I/O请求占用的CPU百分比,值越高,说明I/O越慢

8. 统计网络信息 sar -n 
    -n { <关键词> [,...] | ALL }
        关键词可以是:
        DEV    网卡
        EDEV    网卡 (错误)
        NFS    NFS 客户端
        NFSD    NFS 服务器
        SOCK    Sockets (套接字)    (v4)
        IP    IP 流    (v4)
        EIP    IP 流    (v4) (错误)
        ICMP    ICMP 流    (v4)
        EICMP    ICMP 流    (v4) (错误)
        TCP    TCP 流    (v4)
        ETCP    TCP 流    (v4) (错误)
        UDP    UDP 流    (v4)
        SOCK6    Sockets (套接字)    (v6)
        IP6    IP 流    (v6)
        EIP6    IP 流    (v6) (错误)
        ICMP6    ICMP 流    (v6)
        EICMP6    ICMP 流    (v6) (错误)
        UDP6    UDP 流    (v6)

8.1  网络接口信息 sar -n DEV

sar -n DEV 1 1

IFACE  本地网卡接口的名称

rxpck/s  每秒钟接受的数据包

txpck/s  每秒钟发送的数据库

rxKB/S  每秒钟接受的数据包大小,单位为KB

txKB/S  每秒钟发送的数据包大小,单位为KB

rxcmp/s  每秒钟接受的压缩数据包

txcmp/s  每秒钟发送的压缩包

rxmcst/s  每秒钟接收的多播数据包

8.2 网络设备通信失败信息 sar -n EDVE

sar -n EDEV 1 1

IFACE 网卡名称

rxerr/s  每秒钟接收到的损坏的数据包

txerr/s  每秒钟发送的数据包错误数

coll/s  当发送数据包时候,每秒钟发生的冲撞(collisions)数,这个是在半双工模式下才有

rxdrop/s  当由于缓冲区满的时候,网卡设备接收端每秒钟丢掉的网络包的数目

txdrop/s 当由于缓冲区满的时候,网络设备发送端每秒钟丢掉的网络包的数目

txcarr/s  当发送数据包的时候,每秒钟载波错误发生的次数

rxfram/s   在接收数据包的时候,每秒钟发生的帧对其错误的次数

rxfifo/s    在接收数据包的时候,每秒钟缓冲区溢出的错误发生的次数

txfifo/s    在发生数据包 的时候,每秒钟缓冲区溢出的错误发生的次数

8.3统计socket连接信息  sar -n SOCK

sar -n SOCK 1 1

totsck  当前被使用的socket总数

tcpsck  当前正在被使用的TCP的socket总数

udpsck   当前正在被使用的UDP的socket总数

rawsck  当前正在被使用于RAW的skcket总数

if-frag   当前的IP分片的数目

tcp-tw  TCP套接字中处于TIME-WAIT状态的连接数量

8.4 TCP连接的统计  sar -n TCP

sar -n TCP 1 1

active/s  新的主动连接

passive/s  新的被动连接

iseg/s  接受的段

oseg/s  输出的段

kill

Linux kill 命令用于删除执行中的程序或工作。

kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。

语法

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

参数说明:

-l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
-s <信息名称或编号> 指定要送出的信息。
[程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
使用 kill -l 命令列出所有可用信号。

最常用的信号是:1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。

杀死进程# kill 12345强制杀死进程# kill -KILL 123456发送SIGHUP信号,可以使用一下信号# kill -HUP pid彻底杀死进程# kill -9 123456显示信号# kill -l
1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX杀死指定用户所有进程#kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程
#kill -u hnlinux //方法二

内存相关命令

free

Linux free命令用于显示内存状态。

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

语法

free [-bkmotV][-s <间隔秒数>]

参数说明:

-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:B = bytes
K = kilos
M = megas
G = gigas
T = teras
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。

显示内存使用情况# free //显示内存使用信息
total used free shared buffers cached
Mem: 254772 184568 70204 0 5692 89892
-/+ buffers/cache: 88984 165788
Swap: 524280 65116 459164
以总和的形式显示内存的使用信息# free -t //以总和的形式查询内存的使用信息
total used free shared buffers cached
Mem: 254772 184868 69904 0 5936 89908
-/+ buffers/cache: 89024 165748
Swap: 524280 65116 459164
Total: 779052 249984 529068
周期性的查询内存使用信息# free -s 10 //每10s 执行一次命令
total used free shared buffers cached
Mem: 254772 187628 67144 0 6140 89964
-/+ buffers/cache: 91524 163248
Swap: 524280 65116 459164total used free shared buffers cached
Mem: 254772 187748 67024 0 6164 89940
-/+ buffers/cache: 91644 163128
Swap: 524280 65116 459164

pmap

Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。Pmap实际上是一个Sun OS上的命令,linux仅支持其有限的功能。但是它还是对查看完整的进程地址空间很有帮助。我们需要PID或者运行的进程的唯一进程ID来查看进程内存状态,我们可以通过/proc或者常规命令比如top或ps得到它。

名称:
      pmap - report memory map of a process(查看进程的内存映像信息)

用法
      pmap [ -x | -d ] [ -q ] pids...

pmap -V

选项含义
      -x   extended       Show the extended format. 显示扩展格式

-d  device         Show the deviceformat.   显示设备格式

-q   quiet          Do not display some header/footerlines. 不显示头尾行

-V   show version   Displays version of program. 显示版本

扩展格式和设备格式域:
       Address:  start address ofmap  映像起始地址

Kbytes: size of map in kilobytes  映像大小

RSS:  resident set size inkilobytes  驻留集大小

Dirty:  dirty pages (both sharedand private) in kilobytes  脏页大小

Mode:  permissions on map 映像权限: r=read,w=write, x=execute, s=shared, p=private (copy on write)

Mapping:  file backing the map ,or '[ anon ]' for allocated memory, or '[ stack ]' for the program stack.  映像支持文件,[anon]为已分配内存[stack]为程序堆栈

Offset: offset into the file  文件偏移

Device:  device name(major:minor)  设备名

查看进程1的设备格式[root@C44 ~]#  pmap -d 11:  init [5]                   Address  Kbytes Mode  Offset           Device    Mapping00934000      88 r-x-- 0000000000000000 008:00005ld-2.3.4.so0094a000       4 r---- 0000000000015000 008:00005ld-2.3.4.so0094b000       4 rw--- 0000000000016000 008:00005ld-2.3.4.so0094e000   1188 r-x-- 0000000000000000 008:00005 libc-2.3.4.so00a77000       8 r---- 0000000000129000 008:00005libc-2.3.4.so00a79000       8 rw--- 000000000012b000 008:00005libc-2.3.4.so00a7b000       8 rw--- 0000000000a7b000 000:00000   [ anon ]00a85000      52 r-x-- 0000000000000000 008:00005libsepol.so.100a92000       4 rw--- 000000000000c000 008:00005libsepol.so.100a93000      32 rw--- 0000000000a93000 000:00000   [ anon ]00d9d000      52 r-x-- 0000000000000000 008:00005libselinux.so.100daa000       4 rw--- 000000000000d000 008:00005libselinux.so.108048000      28 r-x-- 0000000000000000 008:00005 init0804f000       4 rw--- 0000000000007000 008:00005 init084e1000    132 rw--- 00000000084e1000 000:00000  [ anon ]b7f5d000       8 rw--- 00000000b7f5d000 000:00000   [ anon ]bffee000      72 rw--- 00000000bffee000 000:00000   [ stack ]ffffe000       4 ----- 0000000000000000 000:00000   [ anon ]mapped: 1700K    writeable/private: 276K    shared: 0K[root@C44 ~]# 最后一行的值mapped 表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vszwriteable/private  表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小     shared 表示进程和其他进程共享的内存大小查看进程1的设备格式,不显示头尾行[root@C44 ~]#  pmap -d -q 11:  init [5]                   00934000      88 r-x-- 0000000000000000 008:00005ld-2.3.4.so0094a000       4 r---- 0000000000015000 008:00005ld-2.3.4.so0094b000       4 rw--- 0000000000016000 008:00005ld-2.3.4.so0094e000   1188 r-x-- 0000000000000000 008:00005 libc-2.3.4.so00a77000       8 r---- 0000000000129000 008:00005libc-2.3.4.so00a79000       8 rw--- 000000000012b000 008:00005libc-2.3.4.so00a7b000       8 rw--- 0000000000a7b000 000:00000   [ anon ]00a85000      52 r-x-- 0000000000000000 008:00005libsepol.so.100a92000       4 rw--- 000000000000c000 008:00005libsepol.so.100a93000      32 rw--- 0000000000a93000 000:00000   [ anon ]00d9d000      52 r-x-- 0000000000000000 008:00005libselinux.so.100daa000       4 rw--- 000000000000d000 008:00005libselinux.so.108048000      28 r-x-- 0000000000000000 008:00005 init0804f000      4 rw--- 0000000000007000008:00005 init084e1000    132 rw--- 00000000084e1000 000:00000  [ anon ]b7f5d000       8 rw--- 00000000b7f5d000 000:00000   [ anon ]bffee000      72 rw--- 00000000bffee000 000:00000   [ stack ]ffffe000       4 ----- 0000000000000000 000:00000   [ anon ][root@C44 ~]# 查看进程1的扩展格式[root@C44 ~]#  pmap -x 11:  init [5]                   Address  Kbytes     RSS    Anon Locked Mode   Mapping00934000      88      -       -       - r-x-- ld-2.3.4.so0094a000       4      -       -       - r---- ld-2.3.4.so0094b000       4      -       -       - rw--- ld-2.3.4.so0094e000   1188       -       -      - r-x--  libc-2.3.4.so00a77000       8      -       -       - r---- libc-2.3.4.so00a79000       8      -       -       - rw--- libc-2.3.4.so00a7b000       8      -       -       - rw---    [ anon ]00a85000      52      -       -       - r-x-- libsepol.so.100a92000       4      -       -       - rw--- libsepol.so.100a93000     32       -      -       - rw---    [ anon ]00d9d000      52      -       -       - r-x-- libselinux.so.100daa000       4      -       -       - rw--- libselinux.so.108048000      28      -       -       - r-x-- init0804f000       4      -       -      - rw---  init084e1000    132       -       -      - rw---    [ anon ]b7f5d000       8      -       -       - rw---    [ anon ]bffee000      72      -       -       - rw---    [ stack ]ffffe000       4      -       -       - -----    [ anon ]-------- ------- ------- ------- -------total kB   1700       -       -      -[root@C44 ~]# 循环显示进程3066的设备格式的最后1行,间隔2秒,[root@C44 ~]#  while true; do pmap -d  3066 | tail -1; sleep 2; donemapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0Kmapped: 5412K    writeable/private: 2028K    shared: 0K

IO相关命令

df

Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

语法

df [选项]... [FILE]...

文件-a, --all 包含所有的具有 0 Blocks 的文件系统
文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
文件-i, --inodes 列出 inode 资讯,不列出已使用 block
文件-k, --kilobytes 就像是 --block-size=1024
文件-l, --local 限制列出的文件结构
文件-m, --megabytes 就像 --block-size=1048576
文件--no-sync 取得资讯前不 sync (预设值)
文件-P, --portability 使用 POSIX 输出格式
文件--sync 在取得资讯前 sync
文件-t, --type=TYPE 限制列出文件系统的 TYPE
文件-T, --print-type 显示文件系统的形式
文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
文件-v (忽略)
文件--help 显示这个帮手并且离开
文件--version 输出版本资讯并且离开

显示文件系统的磁盘使用情况统计:# df
Filesystem     1K-blocks    Used     Available Use% Mounted on
/dev/sda6       29640780 4320704     23814388  16%     /
udev             1536756       4     1536752    1%     /dev
tmpfs             617620     888     616732     1%     /run
none                5120       0     5120       0%     /run/lock
none             1544044     156     1543888    1%     /run/shm第一列指定文件系统的名称,第二列指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。使用列指定使用的内存的百分比,而最后一栏"安装在"指定的文件系统的挂载点。df也可以显示磁盘使用的文件系统信息:# df test
Filesystem     1K-blocks    Used      Available Use% Mounted on
/dev/sda6       29640780    4320600   23814492  16%       /用一个-i选项的df命令的输出显示inode信息而非块使用量。df -i
Filesystem      Inodes    IUsed    IFree     IUse% Mounted on
/dev/sda6      1884160    261964   1622196   14%        /
udev           212748     560      212188    1%         /dev
tmpfs          216392     477      215915    1%         /run
none           216392     3        216389    1%         /run/lock
none           216392     8        216384    1%         /run/shm显示所有的信息:# df --total
Filesystem     1K-blocks    Used    Available Use% Mounted on
/dev/sda6       29640780 4320720    23814372  16%     /
udev             1536756       4    1536752   1%      /dev
tmpfs             617620     892    616728    1%      /run
none                5120       0    5120      0%      /run/lock
none             1544044     156    1543888   1%      /run/shm
total           33344320 4321772    27516860  14%我们看到输出的末尾,包含一个额外的行,显示总的每一列。-h选项,通过它可以产生可读的格式df命令的输出:# df -h
Filesystem      Size  Used   Avail Use% Mounted on
/dev/sda6       29G   4.2G   23G   16%     /
udev            1.5G  4.0K   1.5G   1%     /dev
tmpfs           604M  892K   603M   1%     /run
none            5.0M     0   5.0M   0%     /run/lock
none            1.5G  156K   1.5G   1%     /run/shm我们可以看到输出显示的数字形式的'G'(千兆字节),"M"(兆字节)和"K"(千字节)。这使输出容易阅读和理解,从而使显示可读的。请注意,第二列的名称也发生了变化,为了使显示可读的"大小"。

网络相关命令

netstat

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

输出信息含义

执行netstat后,其输出结果为

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df

从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

常见参数

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

实用命令实例

1. 列出所有端口 (包括监听和未监听的)
列出所有端口 netstat -a# netstat -a | moreActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENudp        0      0 *:bootpc                *:*Active UNIX domain sockets (servers and established)Proto RefCnt Flags       Type       State         I-Node   Pathunix  2      [ ACC ]     STREAM     LISTENING     6135     /tmp/.X11-unix/X0unix  2      [ ACC ]     STREAM     LISTENING     5140     /var/run/acpid.socket
列出所有 tcp 端口 netstat -at# netstat -atActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENtcp        0      0 localhost:ipp           *:*                     LISTENtcp        0      0 *:smtp                  *:*                     LISTENtcp6       0      0 localhost:ipp           [::]:*                  LISTEN
列出所有 udp 端口 netstat -au# netstat -auActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Stateudp        0      0 *:bootpc                *:*udp        0      0 *:49119                 *:*udp        0      0 *:mdns                  *:*2. 列出所有处于监听状态的 Sockets只显示监听端口 netstat -l# netstat -lActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:ipp           *:*                     LISTENtcp6       0      0 localhost:ipp           [::]:*                  LISTENudp        0      0 *:49119                 *:*只列出所有监听 tcp 端口 netstat -lt# netstat -ltActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENtcp        0      0 *:smtp                  *:*                     LISTENtcp6       0      0 localhost:ipp           [::]:*                  LISTEN只列出所有监听 udp 端口 netstat -lu# netstat -luActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Stateudp        0      0 *:49119                 *:*udp        0      0 *:mdns                  *:*只列出所有监听 UNIX 端口 netstat -lx# netstat -lxActive UNIX domain sockets (only servers)Proto RefCnt Flags       Type       State         I-Node   Pathunix  2      [ ACC ]     STREAM     LISTENING     6294     private/maildropunix  2      [ ACC ]     STREAM     LISTENING     6203     public/cleanupunix  2      [ ACC ]     STREAM     LISTENING     6302     private/ifmailunix  2      [ ACC ]     STREAM     LISTENING     6306     private/bsmtp3. 显示每个协议的统计信息显示所有端口的统计信息 netstat -s# netstat -sIp:11150 total packets received1 with invalid addresses0 forwarded0 incoming packets discarded11149 incoming packets delivered11635 requests sent outIcmp:0 ICMP messages received0 input ICMP message failed.Tcp:582 active connections openings2 failed connection attempts25 connection resets receivedUdp:1183 packets received4 packets to unknown port received......显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su# netstat -st
# netstat -su4. 在 netstat 输出中显示 PID 和进程名称 netstat -p
netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。# netstat -ptActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nametcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefoxtcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox5. 在 netstat 输出中不显示主机,端口和用户名 (host, port or user)
当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。# netstat -an如果只是不想让这三个名称中的一个被显示,使用以下命令# netsat -a --numeric-ports
# netsat -a --numeric-hosts
# netsat -a --numeric-users6. 持续输出 netstat 信息
netstat 将每隔一秒输出网络信息。# netstat -cActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHEDtcp        1      1 ramesh-laptop.loc:52564 101.11.169.230:www      CLOSINGtcp        0      0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHEDtcp        1      1 ramesh-laptop.loc:42367 101.101.34.101:www      CLOSING^C7. 显示系统不支持的地址族 (Address Families)
netstat --verbose在输出的末尾,会有如下的信息netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.8. 显示核心路由信息 netstat -r
# netstat -rKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Iface192.168.1.0     *               255.255.255.0   U         0 0          0 eth2link-local      *               255.255.0.0     U         0 0          0 eth2default         192.168.1.1     0.0.0.0         UG        0 0          0 eth2注意: 使用 netstat -rn 显示数字格式,不查询主机名称。9. 找出程序运行的端口
并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。# netstat -ap | grep sshtcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -找出运行在指定端口的进程# netstat -an | grep ':80'10. 显示网络接口列表
# netstat -iKernel Interface tableIface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flgeth0       1500 0         0      0      0 0             0      0      0      0 BMUeth2       1500 0     26196      0      0 0         26883      6      0      0 BMRUlo        16436 0         4      0      0 0             4      0      0      0 LRU显示详细信息,像是 ifconfig 使用 netstat -ie:# netstat -ieKernel Interface tableeth0      Link encap:Ethernet  HWaddr 00:10:40:11:11:11UP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)Memory:f6ae0000-f6b0000011. IP和TCP分析查看连接某服务端口最多的的IP地址wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
18 221.136.168.36
3 154.74.45.242
2 78.173.31.236
2 62.183.207.98
2 192.168.1.14
2 182.48.111.215
2 124.193.219.34
2 119.145.41.2
2 114.255.41.30
1 75.102.11.99TCP各种状态列表wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'
established)
Foreign
LISTEN
TIME_WAIT
ESTABLISHED
TIME_WAIT
SYN_SENT先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c
143 ESTABLISHED
1 FIN_WAIT1
1 Foreign
1 LAST_ACK
36 LISTEN
6 SYN_SENT
113 TIME_WAIT
1 established)最后的命令如下:netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn分析access.log获得访问前10位的ip地址awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10

linux 查看系统性能总结相关推荐

  1. Linux查看系统性能命令

    文章目录 Linux系统性能命令 CPU 内存 磁盘 网络 进程 Linux系统性能命令 Linux内核:操作系统内部最核心的软件 作用: 对cpu进行调度管理 对文件系统(磁盘和分区)进行管理 内存 ...

  2. linux查看系统性能

    在使用linux操作系统时,我们可能需要去查看系统的性能,如查看CPU:内存以及硬盘的使用情况,以下是性能监控使用到的指令 1. 查看CPU 1.1 查看整个CPU使用情况:sar -u 1.2 指定 ...

  3. linux查看虚拟内存和cpu占用率

    top free cat /proc/meminfo cat /proc/cpuinfo [root@centerlisdb proc]# dmidecode |grep -A16 "Mem ...

  4. linux操作系统中查看网络信息的命令,Linux查看系统信息命令盘点

    Linux查看系统信息命令盘点 在Linux系统上有很多操作都是用命令完成的,下面跟yjbys小编一起来看看最新的系统命令吧,希望对大家有所帮助! 1.查看系统内核 uname -a uname -r ...

  5. linux 内存 参数,linux free命令参数及用法详解(linux查看内存命令)

    linux free命令参数及用法详解(linux查看内存命令) 2019年05月31日 | 萬仟网科技 | 我要评论 free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段 ...

  6. linux怎么查看硬盘读写数据,Linux查看硬盘读写情况(汇总版)

    除了 CPU 和内存,硬盘读写(I/O)能力也是影响 Linux 系统性能的重要因素之一.本节将介绍几个可用来查看硬盘读写性能的系统命令,并教大家如何通过这些命令的输出结果,判断出当前系统中硬盘是否处 ...

  7. Linux文件系统性能优化

    由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性.然而在特定应用下,这种配置往往在I/O性能方面不能达到最优.因此,如果应用对I/O性能要求较高,除了 ...

  8. linux查看虚拟内存占用高,linux查看虚拟内存和cpu占用率

    top free cat /proc/meminfo cat /proc/cpuinfo [root@centerlisdb proc]# dmidecode |grep -A16 "Mem ...

  9. Linux文件系统性能调优 参数优化

    由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性.然而在特定应用下,这种配置往往在I/O 性能方面不能达到最优.因此,如果应用对I/O性能要求较高,除 ...

最新文章

  1. iOS 对UIImage进行的一些操作
  2. 调整JVM堆内存解决OutOfMemoryError
  3. boost线程之类成员函数
  4. We Chall-Training: Get Sourced-Writeup
  5. workspace-project-target关系与解耦工程结构总结
  6. 使用git remote提交代码
  7. 交叉编译指定运行时库路径_运行时vs编译时类路径
  8. html 实现列表组并排,列表组--自定义列表组
  9. MathType与Origin是怎么兼容的
  10. SpringMVC介绍
  11. 如何搭建一个spring boot项目
  12. PS颜色校正(Photoshop颜色显示偏色)
  13. 软件开发学习资料大全
  14. html文件里面的中文乱码
  15. Ionic系列——Ionic介绍
  16. 分享2个ICON资源链接
  17. 效率提升98%!高海拔光伏电站运维巡检背后的AI利器
  18. spectral-cluster聚类算法详解
  19. APP安全测试点分析
  20. 了解一些常用的文件系统和一些基础定义

热门文章

  1. 论文笔记-Multi-view Incremental Segmentation of 3D Point Clouds for Mobile Robots
  2. OPPO R11网络口碑扑街,OPPO 新品恐遭滑铁卢!
  3. 安卓模拟器调试钉钉微应用
  4. Word基础(二十七)表格之重复标题
  5. 堕入魔道:花式slider轮播
  6. 测试适合眉形的软件_【脸型测试软件下载】-脸型测试软件苹果版下载-丫丫安卓网...
  7. 网络爬虫快速入门(二)
  8. 做Tik Tok CPA CPS 月入5w 我踩过哪些坑?
  9. 微信ajax异步提交form表单,ajax异步提交表单
  10. 【FAQ】关于华为地图服务定位存在偏差的原因及解决办法