
(一)Linux监控的几个常用命令(对于服务器后端程序猿很重要,必须掌握):
命令 |
功能 |
命令 |
功能 |
iostat |
统计CPU及网络、设备和分区IO的数据 |
vmstat |
展示给定时间服务器的状态值(包括CPU使用率、内存使用状况、虚拟内存交换情况、IO读写情况),很常用 |
free |
显示内存状况,包括空闲以及被使用的物理内存、交换内存以及被kernel使用的缓冲区 |
sar? |
System Activity report 系统活动报告,是目前Linux最为全面的系统性能分析工具之一? |
ps |
显示当前正在运行的所有进程的快照 |
strace |
跟踪进程执行时系统调和所接收的信号 |
top |
实时显示系统中各个进程的资源(cpu和load)占用状况,类似于windows任务管理器 |
tcpdump |
dump the traffic on a network,根据用户定义对网络上的包进行截获的包分析工具, 功能和查看pcap包的wireshark工具差不多 |
?
?统计CPU及网络、设备和分区IO的数据,具体命令行参数见下表:
选项 |
含义 |
?-d? |
显示设备(磁盘)使用状态 |
?-k |
某些使用block为单位的列强制使用kilobytes/每秒 |
?-x |
显示更多统计信息 |
?-c? |
显示CPU利用率 |
输入"iostat -x”,结果如下图:

avg-cpu统计信息每段含义见下表:
参数 |
含义 |
?%user? |
?在用户态运行程序,CPU利用的百分比 |
?%nice |
?在nice优先级(即静态优先级,具体啥含义请百度) |
?%system |
?在内核态运行程序,CPU利用的百分比 |
?%iowait
|
特别重要 —?show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request |
?%steal |
?虚拟CPU等待的百分比 —?Show the percentage of time spent in involuntary wait by the virtual CPU or CPUs ?while the hypervisor was servicing another virtual processor |
?%idle |
?CPU 空闲的比列,CPU没有IO请求需要处理 — 和 %iowait含义相反 |
?
?设备(device)输出结果每段含义详细说明见下表:
参数 |
含义 |
?rrqm/s? |
?每秒这个设备相关的读取请求有多少被merge了, ?当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge |
?wrqm/s |
?每秒这个设备相关的写入请求有多少被merge了 |
?r/s |
?The number of read requests that were issued to the device per second |
?w/s |
?The number of write requests that were issued to the device per second |
?rsec/s |
?每秒读取的扇区数 |
?wsec/s |
?每秒写入的扇区数 |
?avgrq-sz |
? |
?avgqu-sz |
? |
?await |
?每一个IO请求的处理的平均时间(单位是毫秒) |
?svctm |
? |
?%util
|
?在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO, ?而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。 一般地,如果该参数是100%表示设备已经接近满负荷运行了 (当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。 |
?
参考?iostat(1) - Linux man page
实时显示系统中各个进程的资源占用状况,类似于windows任务管理器,默认3秒钟刷新一次,太快了,看不过来,-d 可以指定,多少时间更新一次
具体命令行参数说明见下表:
选项 |
含义 |
-a |
按照内存使用率排序 |
-d |
设置多长时间(以秒为单位)刷新一次结果 |
-p <pid> |
?查看指定进程ID的信息 |
?-u <username>? |
?查看指定用户名的信息 |
?-i? |
?不显示任何闲置 (idle) 或僵尸 (zombie) 的进程 |
?-n?iterations |
?指定更新多少次信息后终止 |
?-c |
?显示完整命令,如mysql会显示 “/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql”? |
?-s |
?安全模式 |
?-S |
?累积时间模式,开启此模式,会列出该进程及它已经死掉的子进程所使用的CPU时间 |
?
例如,“top -d 30” —— 30秒刷新一次(默认按cpu占用率排序),结果如下图:

?输出结果前5行(统计的整体信息)的每一段的含义如下表所示:
行 |
段1含义 |
段2含义 |
段3含义 |
段4含义 |
段5含义 |
段6含义 |
段7含义 |
段8含义 |
?1 - top |
13:43:10 - 当前时间 |
?up 4:21 - 系统运行时间,格式为"时:分"
|
?1 user - 当前登录用户数 |
?load average: 0.01,0.04,0.01 - 系统负载,即任务队列的平均值 三个数值依次为"1分钟5分钟 15分钟”到目前的平均值 |
? |
? |
? |
? |
?2 - Tasks |
1012 total - 进程总数 |
?1 running -? 正在运行的进程数 |
?1095 sleeping - 睡眠的进程数 |
?6 stopped - 停止的进程数 |
0 zombie - 僵尸进程数? |
? |
? |
? |
?3 - Cpu(s) |
?0.8%us - 用户空间占用CPU百分比 |
?0.1%sy - 内核空间占用CPU百分比 |
?0.0%ni -?用户进程空间改变过优先级的占CPU百分比 |
?99.2%id - 空闲CPU百分比 |
0.0%wa - 等待输入输出的CPU百分比 |
?0.0%hi -? |
0.0%si -? |
0.0%st -? |
?4 - Mem |
?132173688k total - 物理内存总量 |
?38002800k used - 已使用的物理内存总量 |
?94170888k free -?空闲内存总量 |
?208420k buffers - 用于内核缓存的内存总量 |
? |
? |
? |
? |
?5 -Swap |
?4194600k total - 交换区总量 |
?0k used - 已使用的交换区总量 |
?4194300k free - 空闲交换区总量 |
?2624596k cached - 缓冲的交换区总量 |
? |
? |
? |
? |
?
在top命令模式下,按“f”键,会显示每个column的详细信息,如下图:

每一列的含义翻译成中文如下表所示:
列名 |
含义 |
PID |
?进程ID |
USER |
?用户名 |
PR |
?进程优先级 |
NI |
?nice value,不知道怎么翻译好 |
VIRT |
?进程使用的虚拟内存总量(kb) |
RES |
?进程使用的、未被换出的物理内存大小 |
SHR |
?共享内存大小(kb) |
S |
?进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程 |
%CPU |
?上次更新到现在的CPU时间占用百分比 |
%MEM |
?进程当前使用的可被共享的内存容量 |
TIME+ |
?task自启动以来,累计占用cpu时间,精确到百分之一秒 |
COMMAND |
?命令行或者程序名 |
?
?显示空闲和使用的内存信息,命令参数选项如下表:
选项 |
含义 |
?-b -k -m -g? |
单位分别为bytes,KB,MB,G |
?-h |
人类可读(即自动以MB,G等为单位显示) |
?-t? |
额外显示总数 (RAM + swap) |
?-o (old format) |
不会显示 -/+ buffers/cache 这行信息 |
?
输入“free -m”,以M为单位,便于精确计算讲解,结果如下图:

?
输出结果具体每行每列的含义详见下表:
?行 |
total |
used |
free |
shared |
buffers |
cached |
?Mem: |
内存总数 (total = used + free) |
已经使用的内存数量 |
空闲内存数量 |
共享内存数量,据说已经废弃不用 |
缓冲内存数量 |
缓存内存数量 |
?-/+ buffers/cache: |
? |
(- buffers/cache) used ——?反映的是被程序实实在在吃掉的内存 使用的内存数 = 第一行即Mem行的?“used - buffers - cached”?=?34562 - 87 - 1322 = 33151M |
(+ buffers/cache) free ——?反映的是可以挪用的内存总数 空闲内存数 = 第一行即Mem行的?“free + buffers + cached”?=?94513 + 87 + 1322?= 95922M 差2M不知道哪里来的 |
? |
? |
? |
?swap: (交换区) |
交换区内存总数 |
交换区已使用内存数 |
交换区空闲内存数 |
? |
? |
? |
System Activity report 系统活动报告,是目前Linux最为全面的系统性能分析工具之一
dump the traffic on a network,根据用户定义对网络上的包进行截获的包分析工具
?(二)基本简单命令
列表汇总基本命令:
命令 |
功能 |
命令 |
功能 |
命令 |
功能 |
?ls |
?查看当前目录下有哪些文件和文件夹 |
?whereis |
?查找可执行的软件命令在哪里 |
?clear/reset/ CTRL + l |
?清屏——切换到下一个新的屏幕 |
?pwd |
?显示当前目录的完整路径 |
?cd |
?改变所在目录 |
?vi |
?文本编辑器 |
?cat |
?输出文件的内容到屏幕 |
?mkdir |
?创建目录 |
?vim |
?程序编辑器 |
?sh |
?执行shell脚本 |
?rmdir |
?删除目录 |
?kill |
?杀死进程 |
?yum |
?软件包管理器 |
?mv |
?移动文件 |
?ifconfig |
?显示或者设置网络设备 |
?sudo |
?以系统管理员的身份执行指令,类似于windows? CMD,右键选择"以管理员身份运行“” |
?rm |
?删除文件 |
?cal |
?日历 |
?df |
?查看磁盘使用情况 |
?cp |
?复制文件 |
?date |
?日期 |
?stat |
?显示文件或者文件系统的状态 |
?touch |
?更新文件的访问时间和修改时间,如果不存在,则创建之 |
?bc |
?计算器 |
?
linux命令的常识:
(1)大小写敏感,如?"top"可以识别,"Top"?则comand not found
(2)-h (部分命令支持,如冲突则不支持)和 --help(大多数命令支持),查看命令帮助信息,如?rmdir --help,提示“?rmdir [OPTION]... DIRECTORY..”
(3)命令有缩写和全拼两种格式,如 rmdir 的"-p" <=> "--parents"
(4)CTRL +? C ,exit 当前正在执行的命令;CTRL + Z,stop 当前正在执行的命令
(5)命令格式说明,“【】”括起来表示选项可选,接下来紧跟的详细参数,如ls命令说明:“ls [OPTION]... [FILE]...”
(6)可通过“|”进行命令拼接,如“ps -ef | grep java | grep -v grep”?
(7)linux 命令或者参数在输入1个或2个字符后,按Tab键,会列出可选命令和参数,如果输入3个或者4个字符,可查找出唯一的命令和参数,将自动补全
(8)键盘“PgUp”和“PgDn"及 键盘“↑”和“↓”?可以切换到上一个或者下一个已输入的命令, 按键“←”?和“→”?,可以在命令里左右移动光标
(8)linux里所有东西都被当做文件,不像windows有硬件设备的概念,如磁盘、CPU等,所以你装的所有软件,如mysql等都是文件
?
详细论述:
查看当前目录下有哪些文件及文件夹,具体命令行参数说明见下表:
?
常用选项 |
含义 |
-l |
一行显示一个文件或者文件夹,并显示诸如文件大小、文件最后修改时间、owner等信息 |
-a |
列出所有文件及文件夹,包括隐藏文件 |
-R |
把子文件夹下的文件也全部列出来,可以“ls -R -l”组合用 |
-S |
按文件大小倒叙列出所有文件 |
-h |
以人类可读的形式列出文件大小(K,M,G) |
如在 linux的根目录下,输入“ls”,结果如下图:

如果是在包含有文件的目录下,输入“ls”,比如在root下,则会包含文件如 “install.log”?及文件夹?“Music”?等等,结果如下图:

?
组合命令,“ls -S -h -l”,结果如下图:

显示当前的完整路径名,如下图:

切换当前目录,具体语法: cd [dirName],具体命令行参数说明见下表:
选项 |
含义 |
?.. |
切换到父级目录 |
?/? |
切换到根目录 |
?~ |
切换到home根目录 |
?
查找命令—具体语法: whereis [ -sbmu ] [ -SBM dir ... -f ] name...,例如"whereis mysql",结果如下图:

输出文件内容到终端,例如“cat install.log”,结果如下图:

显示或者设置网络设备,输入“ifconfig”,结果如下图(可以看到自己的ipv4 、ipv6 地址等信息):

更新文件的访问时间和修改时间,如果文件不存在,则创建之。如我在root根目录,“touch test2019.txt”,文件不存在则创建之,效果如下图:

创建目录,
- rmdir
- df
- vi 及vim
- yum?
- sudo
- stat
显示文件或者文件系统的状态,具体语法: stat [OPTION]... FILE...,例如“stat a.txt”,结果如下图:

内置计算器,"bc -q"?不会输出关于bc软件的一些信息,直接用(回车输出结果),如下图:

日历
日期—具体语法:?date [OPTION]... [+FORMAT],例如“date ‘+%Y % m%d %H %m’”,输出当期日期的年月日、时、分,结果如下图:

?
附注:
- IBM real word linux
- 菜鸟教程之Linux命令大全
- 鸟哥的私房菜之基础篇
?
未完待续,空了接着完善
*****************************************************************************************************
精力有限,想法太多,专注做好一件事就行
- 我只是一个程序猿。5年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
- 写博客的意义在于锻炼逻辑条理性,加深对知识的系统性理解,锻炼文笔,如果恰好又对别人有点帮助,那真是一件令人开心的事
*****************************************************************************************************