linux系统性能监视命令,经过百度谷歌,加上各渠道获得,查找到相关命令汇集,望能学有所收获 --by 王子
汇集命令如下:
内存:top、 free、 vmstat、 mpstat、iostat、 sar
CPU:top、 vmstat、 mpstat、 iostat、 sar
I/O:vmstat、 mpstat、 iostat、 sar
进程:ipcs、 ipcrm、 lsof、 strace、 lstrace
负载:uptime、 mount、 umount、 df、 du、 fsck、 dd、 dumpe2fs、 dump
top
显示管理执行中的程序。
命令格式:top [-] [d] [p] [q] [c] [C] [S][n]
常用参数(详细内容可以参考MAN 帮助文档。这里列举部分内容)
b 使用批处理模式。# top b
c 列出程序时,显示每个程序的完整指令,包括指令名称,路径和参数等相关信息。# top c
d<间隔秒数> 设置top监控程序执行状况的间隔时间,单位以秒计算。# top d
i 执行top指令时,忽略闲置或是已成为Zombie的程序。# top i
n<执行次数> 设置监控信息的更新次数。# top n
q 持续监控程序执行的状况。# top q
s 使用保密模式,消除互动模式下的潜在危机。# top s
S 使用累计模式,其效果类似ps指令的"-S"参数。# top S/-S
备注:
一.TOP前五行统计信息:
1、统计信息区前五行是系统整体的统计信息。
2、第二、三行为进程和CPU的信息
3、第四五行为内存信息。
二.列表进程信息
详细内容请查阅:http://www.jb51.net/LINUXjishu/34604.html
free
显示内存状态。
命令格式:free [-bkmotV][-s <间隔秒数>]
常用参数
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
备注:
# free
# free -mMem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,
详细内容请查阅:
http://www.jb51.net/LINUXjishu/57932.html
vmstat
显示虚拟内存使用情况
命令格式:
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n]
[delay [ count]]
vmstat [-f]
vmstat [-V]
常用参数
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
# vmstat 5 6
(命令:vmstat 5 6
表示在5秒时间内进行6次采样。将得到一个数据汇总他能够反映真正的系统情况。)vmstat命令输出信息详细说明:
字段说明:
Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
CPU(以百分比表示):
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间
备注: 如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。如果pi,po 长期不等于0,表示内存不足。如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。
详细查阅:
http://www.jb51.net/LINUXjishu/152024.html
mpstat
实时系统监控工具。
命令格式:mpstat [-P {|ALL}] [internal [count]]
常用参数
(当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。)
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间、
count 采样的次数,count只能和delay一起使用
备注:
mpstat -P ALL 2属性说明:
%user在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程(usr/total)*100
%nice在internal时间段里,nice值为负进程的CPU时间(%)(nice/total)*100
%sys在internal时间段里,内核时间(%)(system/total)*100
%iowait在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq在internal时间段里,硬中断时间(%)(irq/total)*100
%soft在internal时间段里,软中断时间(%)(softirq/total)*100
%idle在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100
计算公式:
total_cur=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
user=user_cur – user_pre
total=total_cur-total_pre
其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。
详细查阅:http://www.cnblogs.com/stephen-liu74/archive/2011/12/05/2257887.html
iostat
(输入/输出统计)对系统的磁盘操作活动进行监视。
命令格式:iostat[参数][时间][次数]
常用参数
-C 显示CPU使用情况cpu
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
disk属性:
属性值说明:
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。
示例:
iostat -d 2 2
[root@localhost ~]# iostat -d 2 2
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) 02/13/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 2.28 105.65 3.61 1043443 35692
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.50 4.00 0.00 8 0
iostat -d -k 1 1
[root@localhost ~]# iostat -d -k 1 1
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) 02/13/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 2.08 95.97 3.30 1043619 35939
属性值说明:
%user 显示了在用户级(应用程序)执行时产生的 CPU 使用率百分比。
%system 显示了在系统级(内核)执行时产生的 CPU 使用率百分比。
%idle 显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。
%iowait 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。
%nicenice 操作(改变进程优先序列操作)操作使用的CPU百分比
%steal 管理程序维护另一个虚拟处理器时候,虚拟CPU的无意识等待时间百分比
sar
对系统的活动进行报告命令。
包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
命令格式:sar [options] [-A] [-o file] t [n](t为采样间隔,n为采样次数,默认值是1;)
常用参数
-A:所有报告的总和
-P:设定CPU
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-n:汇报网络情况
-q:汇报队列长度和负载信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
示例:
1、例如,每10秒采样一次,连续采样3次,观察CPU的使用情况,并将采样结果以二进制形式存入当前目录下的文件sys_info中,需键入如下命令:
# sar -u -o sys_info 10 3
2、# sar -f sys_info(用-f设定要读取的信息存储文件)
3、# sar -P ALL 1 1(-P查看cpu)
4、例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:
# sar -v 10 3输出项说明:
CPU:all表示统计信息为所有CPU的平均值。
%user:显示在用户级别(application)运行使用CPU总时间的百分比。
%nice:显示在用户级别,用于nice操作,所占用CPU总时间的百分比。
%system:在核心级别(kernel)运行所使用CPU总时间的百分比。
%iowait:显示用于等待I/O操作占用CPU总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。
%idle:显示CPU空闲时间占用CPU总时间的百分比。
注意说明:
(1).若%iowait的值过高,表示硬盘存在I/O瓶颈
(2).若%idle的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量
(3).若%idle的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
详细查阅:http://www.jb51.net/LINUXjishu/396293.html
ipcs(与ipcrm相关联)
报告进程间通信设施状态。
命令格式:ipcs [-mqs] [-abcopt] [-C core] [-N namelist]
参数用法
ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息
ipcs -m 打印出使用共享内存进行进程间通信的信息
ipcs -q 打印出使用消息队列进行进程间通信的信息
ipcs -s 打印出使用信号进行进程间通信的信息
ipcs -t 输出信息的详细变化时间
ipcs -p 输出ipc方式的进程ID
ipcs -c 输出ipc方式的创建者/拥有者
ipcs -u 输出当前系统下ipc各种方式的状态信息(共享内存,消息队列,信号)
示例:
1、ipcs -ql
2、ipcrm -删除ipc(清除共享内存信息)引用它的语法:
ipcrm -m|-q|-s shm_id-ql(查看消息队列的限制信息)
说明:
-qt(显示消息队列的创建时间,发送和接收最后一条消息的时间)
-qp(显示往消息队列中放消息和从消息队列中取消息的进程ID)
-q -i msgid:显示该消息队列结构体中的消息信息
详细查阅:http://www.jb51.net/article/40805.htm
ipcrm
移除一个消息对象。或者共享内存段,或者一个信号集,同时会将与ipc对象相关链的数据也一起移除。当然,只有超级管理员,或者ipc对象的创建者才有这项权利。
参数用法
ipcrm -M shmkey移除用shmkey创建的共享内存段
ipcrm -m shmid 移除用shmid标识的共享内存段
ipcrm -Q msgkey 移除用msqkey创建的消息队列
ipcrm -q msqid 移除用msqid标识的消息队列
ipcrm -S semkey 移除用semkey创建的信号
ipcrm -s semid 移除用semid标识的信号
lsof
以列表的形式显示打开的文件和进程。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
命令格式:lsof[options]filename
常用参数
lsof filename 显示打开指定文件的所有进程
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string
显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程情况
lsof -i[46]
[protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4地址
service --> /etc/service中的 service name
(可以不只一个)
port --> 端口号 (可以不只一个)
属性名称:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
详细查阅:http://www.jb51.net/LINUXjishu/83948.html
strace
跟踪程式执行时的系统调用和所接收的信号
命令格式:strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ...
[ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ command [ arg ... ] ]
strace -c [ -eexpr ] ... [ -Ooverhead ] [ -Ssortby ] [ command [ arg ... ] ]
参数详细查阅:http://www.jb51.net/os/RedHat/1156.html
http://man.linuxde.net/strace
lstrace暂无相关信息
uptime
获取主机运行时间和linux系统负载
直接输入uptime
参数 -V获取版本信息
相关:
ps-ef查看进程
-e : 在命令执行后显示环境
-f : 完整显示输出
1) 进程用户ID(UID)
2) 进程ID (PID)
3) 父进程ID (PPID)
4) CPU 调度情况 (C)
5) 进程启动的时间 (STIME)
6) 进程共占用CPU的时间(TIME)
7) 启动进程的命令 (CMD)
cat /proc/uptime 查看系统启动时间和空闲时间
第一个数值代表系统总的启动时间,第二个数值则代表系统空闲的时间,都是用秒来表示的。如果系统里第二个数字比第一个数字还要大,则说明你的cpu是多核的,cpu0上闲了一秒, cpu1上闲了两秒,加起就是三秒。
详细查阅:http://www.jb51.net/article/40813.htm
df
显示磁盘的相关信息(df可显示磁盘的文件系统与使用情形。)
命令格式:df [-ahHiklmPT][--block-size=<区块大小>][-t <文件系统类型>][-x
<文件系统类型>][--help][--no-sync][--sync][--version][文件或设备]
-a或--all 包含全部的文件系统。
--block-size=<区块大小> 以指定的区块大小来显示区块数目。
-h或--human-readable 以可读性较高的方式来显示信息。
-H或--si 与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes。
-i或--inodes 显示inode的信息。
-k或--kilobytes 指定区块大小为1024字节。
-l或--local 仅显示本地端的文件系统。
-m或--megabytes 指定区块大小为1048576字节。
--no-sync 在取得磁盘使用信息前,不要执行sync指令,此为预设值。
-P或--portability 使用POSIX的输出格式。
--sync 在取得磁盘使用信息前,先执行sync指令。
-t<文件系统类型>或--type=<文件系统类型> 仅显示指定文件系统类型的磁盘信息。
-T或--print-type 显示文件系统的类型。
-x<文件系统类型>或--exclude-type=<文件系统类型>不要显示指定文件系统类型的磁盘信息。
--help 显示帮助。
--version 显示版本信息。
[文件或设备] 指定磁盘设备。
示例:
$ df
$ df -ia (列出各文件系统的i节点使用情况)
列出文件系统的类型。
$ df -T
Filesystem Type 1K-blocks Used Available use% Mounted on
/dev/hda2 ext2 1361587 1246405 44824 97% /
(本例中的文件系统是ext2类型的)
# df -a
详细查阅:http://www.jb51.net/LINUXjishu/64953.html
du
评估磁盘的使用情况
命令格式:du [OPTION]… [FILE]…
详细查阅:http://www.jb51.net/LINUXjishu/34649.html
mount
挂接
命令格式:mount [-t vfstype] [-o options] device dir
详细查阅:http://www.jb51.net/article/40808.htm
umount
卸除文件系统。
命令格式:umount [-ahnrvV][-t <文件系统类型>][文件系统]
参数
-a 卸除/etc/mtab中记录的所有文件系统。
-h 显示帮助。
-n 卸除时不要将信息存入/etc/mtab文件中。
-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
-t<文件系统类型> 仅卸除选项中所指定的文件系统。
-v 执行时显示详细的信息。
-V 显示版本信息。
[文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。
详细查阅:http://www.jb51.net/linux/umount.htm
fsck
命令格式:fsck.minix [-aflmrsv][外围设备代号]
命令格式:fsck.ext2 [-acdfFnprsStvVy][-b <分区第一个磁区地址>][-B <区块大小>][-C <反叙述器>][-I][-l/L <损坏区块文件>][-P <处理inode大小>][外围设备代号]
详细查阅:http://www.jb51.net/linux/fsck.htm
http://www.jb51.net/linux/fsck.ext2.htm
dd
用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
命令格式:dd(选项) 来自: http://man.linuxde.net/dd
参数:
bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数;
cbs=<字节数>:转换时,每次只转换指定的字节数;
conv=<关键字>:指定文件转换的方式;
count=<区块数>:仅读取指定的区块数;
ibs=<字节数>:每次读取的字节数;
obs=<字节数>:每次输出的字节数;
of=<文件>:输出到文件;
seek=<区块数>:一开始输出时,跳过指定的区块数;
skip=<区块数>:一开始读取时,跳过指定的区块数;
--help:帮助;
--version:显示版本信息。
示例:
[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s [root@localhost text]# du -sh sun.txt 1.1M sun.txt
该命令创建了一个1M大小的文件sun.txt,其中参数解释: if 代表输入文件。如果不指定if,默认就会从stdin中读取输入。 of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。 bs 代表字节为单位的块大小。 count 代表被复制的块数。 /dev/zero 是一个字符设备,会不断返回0值字节(\0)。
详细查阅:http://www.jb51.net/LINUXjishu/391419.html
http://man.linuxde.net/dd
dumpe2fs
显示ext2/ext3/ext4文件系统信息。
命令格式:dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device
详细查阅:http://www.cnblogs.com/Andy-Lv/p/5299095.html
dump
命令格式:dump(选项)(参数)
备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。http://man.linuxde.net/dump