(一)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%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

参考 iostat(1) - Linux man page

  • 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、网络、磁盘等)的更多相关文章

  1. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

  2. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  3. linux常用命令补充详细

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...

  4. Linux常用命令(超详细)

    一.基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 ...

  5. linux常用命令的介绍

    本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...

  6. Linux常用命令详解下

    Linux常用命令详解 目录 一.Linux常用命令 1.1.查看及切换目录(pwd.cd.ls.du) 1.2.创建目录和文件(mkdir.touch.ln) 1.3.复制.删除.移动目录和文件(c ...

  7. [工作需求]linux常用命令以及vim常用命令

    一.             Linux 常用命令 mkdir dirname新建文件夹 cd ~ 进入自己的家目录 cd dirname 进入名字为dirname的目录: l 显示当前文件夹下的文件 ...

  8. linux 常用命令大全

    linux 常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统 ...

  9. Linux常用命令整理 - imsoft.cnblogs

    su 用户名 在不退出登陆的情况下,切换到另外一个人的身份如果用户名缺省,则切换到root状态会提示输入密码,密码不回显的. 在用su命令切换root用户时,使用“-”选项,这样可以将root的环境变 ...

随机推荐

  1. JS的引入方式_变量的使用_变量的类型

    JS的俩种引入方式: 1. <!--js的引入方式1--> <script> /*网页中的弹框*/ alert("js的学习!!") </script ...

  2. java的传参究竟是按值传递的还是按引用传递的

    这里来弄清楚Java的传参究竟是按值传递的还是按引用传递的. 形参和实参 传参的概念里,有形参和实参的区分.形参是定义方法名和方法体的时候使用的参数,目的是用来接收调用该方法的时候传入的参数:实参是调 ...

  3. Python之数据分析工具包介绍以及安装【入门必学】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 首先我们来看 Mac版 按照需求大家依次安装,如果你还没学到数据分析,建议你 ...

  4. vs里 .sln和.suo 文件 Visual Studio里*.sln和*.suo文件的作用

    Visual Studio里*.sln和*.suo文件的作用      VS项目采用两种文件类型(.sln   和   .suo)来存储特定于解决方案的设置.这些文件总称为解决方案文件,为解决方案资源 ...

  5. 关于C 语言的字符串常量拼接

    问题记录: C语言中,字符串是否可以通过连续的常量创建直接编辑拼接在一起? 比如下述语句赋值: const char *path = “this is string one”   “this is s ...

  6. Manjaro-kde-18.1.3安装体验

    身为Linux排名第一的版本,怎么能不安装一下亲自体验 制作启动U盘 Manjaro身为arc系列的一员,所以我选择使用raw的方式写入(其实我是在Ubuntu中用dd方式写入的,Windows用户也 ...

  7. python学习-加载配置文件

    import configparser # 实例化cp = configparser.ConfigParser() # 加载配置文件cp.read("my_config.conf" ...

  8. 关于eclipse码代码时光标自动消失要重新点击输入框的问题

    前几天码代码时在两个电脑都出现了同样的问题,就是在输入的时候,输入法突然从程序框切换到某不可名状的位置,要重新点击输入框才能解决.(后发现不但是eclipse,任何带有输入框的都会出现此问题) 经排查 ...

  9. 这几种JavaScript语法不要轻易使用,容易出事

    文章目录 12种不宜使用的JavaScript语法 1. == 2. with 3. eval 4. continue 5. switch 贯穿 6. 单行的块结构 7. ++和-- 8. 位运算符 ...

  10. JS---offset系列和scroll系列

    元素的样式属性是无法直接通过:对象.style.属性来获取(样式在style属性中设置)   offset系列: offsetLeft:距离左边位置的值 offsetTop:距离上面位置的值 offs ...