Linux常用命令及详细说明 — 结合工作(侧重性能监控,包括CPU、内存、IO、网络、磁盘等)
(一)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工具差不多 |
转载请注明出处:https://www.cnblogs.com/NaughtyCat/p/most-useful-linux-command-in-work.html
- iostat
统计CPU及网络、设备和分区IO的数据,具体命令行参数见下表:
选项 | 含义 |
-d | 显示设备(磁盘)使用状态 |
-k | 某些使用block为单位的列强制使用kilobytes/每秒 |
-x | 显示更多统计信息 |
-c | 显示CPU利用率 |
输入"iostat -x”,结果如下图:
avg-cpu统计信息每段含义见下表(作者【CoderBaby】):
参数 | 含义 |
%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%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。 |
- ps
- grep
- top
实时显示系统中各个进程的资源占用状况,类似于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 | 命令行或者程序名 |
- free
显示空闲和使用的内存信息,命令参数选项如下表:
选项 | 含义 |
-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: (交换区) | 交换区内存总数 | 交换区已使用内存数 | 交换区空闲内存数 |
- sar
System Activity report 系统活动报告,是目前Linux最为全面的系统性能分析工具之一
- vmstat
- tcpdump
dump the traffic on a network, 根据用户定义对网络上的包进行截获的包分析工具。tcpdump可以将网络传输的数据包的“头”完全截获下来以供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用信息。直接启动tcpdump将监视第一个网络接口上所有流过的数据包,抓取100个包的命令“tcpdump -c 100”,结果如下图:
具体命令行参数详见下表:
选项 | 含义 |
-i <网卡号或称之为网络接口> | 监听指定网卡(又称网络接口)的数据包,如tcpdump -i eth0(监听第一个网络接口,etho也是默认监听的网卡,第一个嘛) |
tcpdump -i etho dst host hostname | 监视所有发送到主名为hostname的网络数据包(dst — 目的地,通过默认网卡) |
tcpdump -i etho src host hostname | 截获主机名为hostname所发送的所有数据(src — 源,通过默认网卡) |
tcpdump ip host 210.27.48.1 and !210.27.48.2 | 获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的网络包 (!—— 取反,即非的意思嘛) |
(二)基本简单命令
列表汇总基本命令:
命令 | 功能 | 命令 | 功能 | 命令 | 功能 |
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"及 键盘“↑”和“↓” 可以切换到上一个或者下一个已输入的命令;按键“←” 和“→” ,可以在命令里左右移动光标;按键“Home” 和“End” 可以跳转到命令的第一个字符和末尾
(8)linux里所有东西都被当做文件,不像windows有硬件设备的概念,如磁盘、CPU等,所以你装的所有软件,如mysql等都是文件
(9)man (manual,手册) + Command,有更详细的命令说明
详细论述:
- ls
查看当前目录下有哪些文件及文件夹,具体命令行参数说明见下表:
常用选项 | 含义 |
-l | 一行显示一个文件或者文件夹,并显示诸如文件大小、文件最后修改时间、owner等信息 |
-a | 列出所有文件及文件夹,包括隐藏文件 |
-R | 把子文件夹下的文件也全部列出来,可以“ls -R -l”组合用 |
-S | 按文件大小倒叙列出所有文件 |
-h | 以人类可读的形式列出文件大小(K,M,G) |
如在 linux的根目录下,输入“ls”,结果如下图:
如果是在包含有文件的目录下,输入“ls”,比如在root下,则会包含文件如 “install.log” 及文件夹 “Music” 等等,结果如下图:
组合命令,“ls -S -h -l”,结果如下图:
- 查看端口占用情况(对于connect refused 问题很管用)
netstat -an | grep 8000 (查看 8000端口的使用情况)
- pwd
显示当前的完整路径名,如下图:
- cd
切换当前目录,具体语法: cd [dirName],具体命令行参数说明见下表:
选项 | 含义 |
.. | 切换到父级目录 |
/ | 切换到根目录 |
~ | 切换到home根目录 |
- 查看cpu
cat /proc/cpuinfo — 有多少内核处理器就有多少条信息,如下:
- 查看内存信息
cat /proc/meminfo (/proc下面有很多关于本机系统及设备的信息,均可如法炮制),如下图:
- whereis
查找命令—具体语法: whereis [ -sbmu ] [ -SBM dir ... -f ] name...,例如"whereis mysql",结果如下图:
- cat
输出文件内容到终端,例如“cat install.log”,结果如下图:
- sh
- ifconfig
显示或者设置网络设备,输入“ifconfig”, 结果如下图(可以看到自己的ipv4 、ipv6 地址等信息):
- kill
- rm
- mv
- cp
- touch
更新文件的访问时间和修改时间,如果文件不存在,则创建之。如我在root根目录,“touch test2019.txt”,文件不存在则创建之,效果如下图:
- mkdir
创建目录,
- rmdir
- df
- vi 及vim
- yum
- sudo
- stat
显示文件或者文件系统的状态,具体语法: stat [OPTION]... FILE...,例如“stat a.txt”, 结果如下图:
- bc
内置计算器,"bc -q" 不会输出关于bc软件的一些信息,直接用(回车输出结果),如下图:
- cal
日历
- date
日期—具体语法: date [OPTION]... [+FORMAT],例如“date ‘+%Y % m%d %H %m’”,输出当期日期的年月日、时、分,结果如下图:
附注:
未完待续,空了接着完善
*****************************************************************************************************
精力有限,想法太多,专注做好一件事就行
- 我只是一个程序猿。5年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
- 写博客的意义在于锻炼逻辑条理性,加深对知识的系统性理解,锻炼文笔,如果恰好又对别人有点帮助,那真是一件令人开心的事
*****************************************************************************************************
Linux常用命令及详细说明 — 结合工作(侧重性能监控,包括CPU、内存、IO、网络、磁盘等)的更多相关文章
- Linux 性能监控之CPU&内存&I/O监控Shell脚本1
Linux 性能监控之CPU&内存&I/O监控Shell脚本1 by:授客 QQ:1033553122 #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...
- Linux 性能监控之CPU&内存&I/O监控Shell脚本2
Linux 性能监控之CPU&内存&I/O监控Shell脚本2 by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...
- linux常用命令补充详细
1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...
- Linux常用命令(超详细)
一.基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 ...
- linux常用命令的介绍
本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...
- Linux常用命令详解下
Linux常用命令详解 目录 一.Linux常用命令 1.1.查看及切换目录(pwd.cd.ls.du) 1.2.创建目录和文件(mkdir.touch.ln) 1.3.复制.删除.移动目录和文件(c ...
- [工作需求]linux常用命令以及vim常用命令
一. Linux 常用命令 mkdir dirname新建文件夹 cd ~ 进入自己的家目录 cd dirname 进入名字为dirname的目录: l 显示当前文件夹下的文件 ...
- linux 常用命令大全
linux 常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统 ...
- Linux常用命令整理 - imsoft.cnblogs
su 用户名 在不退出登陆的情况下,切换到另外一个人的身份如果用户名缺省,则切换到root状态会提示输入密码,密码不回显的. 在用su命令切换root用户时,使用“-”选项,这样可以将root的环境变 ...
随机推荐
- 使用Fiddler 对ios 设备进行HTTPS 的抓取
http://blog.csdn.net/skylin19840101/article/details/43485911 使用Fiddler 对ios 设备进行HTTPS 的抓取
- 用JS实现HTML转PDF
遇到这个需求,现把实现代码整理出来,方便大家参考 <!-- html转PDF --> <script src="https://cdnjs.cloudflare.com/a ...
- 2017 ACM/ICPC 沈阳 L题 Tree
Consider a un-rooted tree T which is not the biological significance of tree or plant, but a tree as ...
- Dubbo一致性哈希负载均衡的源码和Bug,了解一下?
本文是对于Dubbo负载均衡策略之一的一致性哈希负载均衡的详细分析.对源码逐行解读.根据实际运行结果,配以丰富的图片,可能是东半球讲一致性哈希算法在Dubbo中的实现最详细的文章了. 文中所示源码,没 ...
- stm32 io操作 头文件规范
在stm32众多项目开发中,有太多的对io进行操作,若置1或清0,使用官方库提供的函数,固然方便,规范,但是需要包含标准的库,尺寸较大,还得处理不同版本兼容问题,包括io初始化也太繁琐,于是操作原子等 ...
- pyplot概述
matplotlib.pyplot 是命令行风格的函数集,让matplotlib看起来像MATLAB.Each一样工作.pyplot函数能够对画布(figure)进行一些改变,例如:创 ...
- oracle 日常巡检
1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name ...
- Spring、SpringMVC、SpringBoot、SpringCloud的区别与联系
前言 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架.Spring使你能够编写更干净.更可管理.并且更易于测试的代码. Spring MVC是Spring的一个模块,一个w ...
- 网络编程基础之socket套接字编程实现同一IP下的信息传输
鲁照山 1.网络协议的5层模型,每层内容的整理 2.画图描述三次握手四次挥手,和C端S端的状态 3.写一个客户端,实现给服务端发送hello world 字符串, 写一个服务端,将客户端发送的数据变成 ...
- Redis有哪几种数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string 是 redi ...