Linux(入门基础):93---查看系统资源(free、uname、uptime、netstat、dmesg、vmstat)
一、free命令
1.功能
- 查看当前内存/交换分区等的使用量
2.命令格式
- free [-b/-k/-m/-g/-h] [-t] [-s -n -c -N]
相关参数与选项
- -b:以Bytes显示容量(默认选项)
- -k:以KBytes显示容量(默认选项)
- -m:以MBytes显示容量(默认选项)
- -g:以GBytes显示容量(默认选项)
- -h:系统自己指定单位
- -t:在输出的最终结果,显示物理内存与swap的总量
- -s:可以让系统不断刷新显示数据,对于系统查看挺有效
- -n:
- -c:与-s同时处理,让free列出几次的意思
- -N:
3.演示案例
- 案例一:显示目前系统的内存容量
- Mem:当前的内存
- Swap:当前内存的交换分区
- total/used/free:总量和使用掉的容量以及剩余的容量
- share/buffers/cached:已经被使用的量当中,用来作为缓冲以及缓存的
某些文件被频繁的读取时,就会放在内存中,而不是存放在硬盘中,这样可以加快系统的读取性能
二、uname命令
1.功能
- 查看当前系统与内核的信息等
2.命令格式
- uname [选项]
相关参数与选项
- -a:显示系统所有的信息,包括下面选项的所有信息
- -s:显示系统内核名称
- -r:显示内核的版本
- -m:本系统的硬件架构,例如:i686、x86-64
- -p:CPU的类型,与-m差不多
- -i:硬件的平台(x86)
3.演示案例
- 案例:查看内核的信息
- Linux:内核名称
- dongshao:主机名
- 4.4.0-31-generic:内核的版本
- Wed Jul 13 01:07:32:内核版本建立的日期
- x86_64 x86_64 x86_64:硬件架构平台等信息
三、uptime命令
1.功能
- 显示目前的系统时间、系统启动的时间、以及平均负载的情况
- 与top命令显示的第一排的信息是一模一样的
2.演示案例
- 当前的时间(14:52:10)。
- 开机到现在的时间(up 8 min)
- 系统登录的人数(user)
- load average:系统分别在1、5、15分钟内平均任务负载,值越小负载越小,大于1说明你的系统任务过于频繁
四、netstat命令
1.功能
- 这个命令经常被用在网络监控方面
- 显示的信息会被分为两个部分:一部分是网络相关的部分,一部分是与socket进程相关的部分(非网络)
2.命令格式
- netstat [选项]
相关参数与选项
- -a:将目前系统上所有连接、监听、socket信息都列出来
- -t:列出tcp网络封包的信息
- -u:列出udp网络封包的信息
- -n:不以进程的服务名称,以端口号来显示
- -l:列出目前正在网络监听的服务
- -p: 列出该网络服务的进程PID
3.提示
- 你的主机上面到底开了多少个网络服务,与你的网路服务类型无关,而与产生你这个服务的相应的程序有关,程序也是一个进程。例如,你的Linux提供www服务,那么在你的主机上一定要有一个程序来提供这个www服务才行。所以你想要关闭一个网络服务,就关闭该程序所触发的那个进程就行了
4.演示案例
- 案例一:显示网络相关的信息与进程信息
- Active Internet connections (w/o servers)下面的是与网络连接有关的信息
Proto 网络的封包协议,主要为TCP和UDP Recv-Q 非由用户进程连接到此socket的复制的总Bytes数 Send-Q 非由远程主机传送过来的acknowledged总Bytes数 Local Address 本地端的IP:port Foreign Address 远程主机的IP:port State 连接状态,主要有:建立(ESTABLISED)、监听(LISTEN)
- Active UNIX domain sockets (w/o servers)下面是不同的进程的信息(Linux可以接收到不同进程发过来的信息,这就是Linux上面的socket文件,sokcet文件可以沟通两个进程之间的信息,因此进程可以获取对方传过来的数据),上表中socket文件的输出字段如下
Proto 一般就是unix RefCnt 连接到此socket的进程数量 Flags 连接的标识 Type socket存取的类型。主要有确定连接的STREAM与不需要确定的DGRAM两种 State 若为CONNECTED则表示多个进程之间已经建立连接 I-Node Path 连接到此socket的相关进程的路径,或是相关数据的输出路径
第二张图中:那些/tmp/.xx下面的数据,就是X Windows图形界面的相关进程,而PATH指向的就是这些进程要交换数据的socket文件
- 案例二:列出系统上已在监听的网络连接以及PID
- 除了可以列出监听网络的界面和状态之外,最后一栏还列出了此网络服务进程的PID和进程的名称
- 案例三:例如,我们想把上面的那个0 0.0.0.0:59577网络服务关闭的话,可以使用下面的方法(不过这是个非正规的方法,正规的方法查看后面文章的介绍)
- kill -9 944
- killall -9 dhclient
五、dmesg命令
1.功能
- 分析内核产生的信息
- 在你的系统启动时,内核会去检测系统的硬件,你的某些硬件到底有没有被识别,就与这个时候的检测有关。但是这些检测的过程就是你系统启动时,屏幕上显示的信息
- 不管系统启动还是运行的时候,只要是内核产生的信息,都会被记录到内存的某个保护区域内,dmesg就是读取这个区域内的内容
2.演示案例
- 案例一:读取内核启动的启动,信息太多,配合more使用
- 案例二:查找系统启动的时候,硬盘的相关信息
dmesg | grep -i vda
六、vmstat命令
1.功能
2.命令格式
- vmstat -a ==>查看CPU/内存等信息
- vmstat -fs ==>查看内存相关的信息
- vmstat -S 单位 ==>设置显示数据的单位
- vmstat -d ==>与磁盘有关的信息
- vmstat -p 分区 ==>与磁盘有关
相关参数与选项
- -a:使用inactive/active(活动与否)替换buffer/cache的内存输出信息
- -f:开机到目前为止,系统复制(fork)的进程数
- -s:将一些事件(启动至目前为止)导致的内存变化情况列表说明
- -S:后面可以接单位,让显示的数据有单位,例如:K/M替换Bytes
- -d:列出磁盘的读写总量统计表
- -p:后面列出分区,可显示该分区的读写总量统计表
3.演示案例
- 案例一:统计目前主机CPU状态,每秒一次,共计三次
- procs:进程字段的项目
r 等待运行中的进程数量 b 不可被唤醒的进程数量
- memory:内存字段的项目(这一段是与free命令相同的)
swpd 虚拟内存被使用的容量 free 未被使用的内存容量 buff 用于缓冲存储器 cache 用于高速缓存
- swap:内存交换分区的项目(如果si/so的数值太大,表示内存中的数据常常得在磁盘与内存之间传输,系统性能就很差)
si 由磁盘中将进程取出的容量 so 由于内存不足而将没用到的进程写入到磁盘的swap的容量
- io:磁盘读写的项目(这部分的值越高,代表系统的I/O越忙碌)
bi 由磁盘读入的区块数量 bo 写入到磁盘中的区块数量
- system:系统的项目(这两个数值越大,代表系统与外接设备的沟通越频繁。包括磁盘、网卡等)
in 每秒被中断的进程次数 cs 每秒执行的事件切换次数
- cpu:CPU的项目
us 非内核层的CPU使用状态 sy 内核层所使用的CPU状态 id 闲置的状态 wa 等待I/O所耗费的CPU状态 st 被虚拟机(virtual machine)所使用的CPU状态(2.6.11以后才支持)
- 案例二:查看磁盘的读写状态