26、Linux 教程:查询磁盘和监控系统资源
查询磁盘和监控系统资源
查询磁盘分区状态
lsblk(list block device)命令可以查看本系统下所有磁盘和磁盘内的分区信息:
可以看到当前系统有sr0、sda装置,sda下有三个分区分别是123,输出信息的含义是:
NAME是装置的文件名,MAJ:MIN是主要和次要装置代码,RM代表是否为可卸除装置,SIZE是容量,RO代表是否为只读装置,TYPE是装置类型,rom是只读存储器,disk是磁盘,part是分区;MOUNTPOINT为挂载点。··
lsblk -ip 完整路径的装置文件名
可以查看该装置内所有数据的完整文件名及相关信息。
blkid命令可以列出所有装置的文件名和UUID、设备类型,UUID就是linux给装置设置的独一无二的标识符。
parted命令可以列出磁盘分区表类型和分区信息:parted /dev/sda print
:
可以看到分区表类型就是msdos(MBR),接下来就打印了分区信息。
文件系统查询命令df、du、fsck、dumpe2fs
linux的文件系统是ext,CentOS的文件系统是ext4,它最大提供1EB的文件系统和最大16TB的单个文件。
文件系统查看命令df。-a表示显示所有文件系统,-h代表人性化显示使用习惯单位显示容量,-T代表列出文件系统类型,-i代表列出各区域可用的inode数。df后跟选项再跟目录或文件代表查看该目录或文件可用的容量。
ls在统计目录大小时仅仅统计其中文件名占了多大空间,无法统计目录的真实占用空间。此时应该用du命令,-a代表显示文件占用量(默认执行du时只显示当前下的目录),-h代表人性化显示,-s代表统计当前总占用量而不列出细节:
du和df命令有一些区别,df命令是从文件系统考虑的,不光要考虑文件占用的空间,还包括被命令或程序占用的空间,而du是纯粹的文件大小,所以要按时重启服务器,删除这些命令或程序占用的空间。
文件修复命令fsck:fsck [选项] 分区设备文件名
,也就是sda1、sda2等。这个修复命令在系统启动时会自动执行,一般不需要手动执行,执行时有一定的风险。
显示磁盘状态命令dumpe2fs,后跟分区设备文件名,可以显示数据块的信息等。
查看文件系统中要注意挂载点/proc占用的存储都是0,它一般存系统数据,内部数据都存在内存中。
系统资源查看
vmstat命令监控系统资源:vmstat [刷新延时 刷新次数]
,如vmstat 1 3
代表一共监听3次,每次间隔1s。
r代表等待运作中的进程数量,b代表不可被唤醒的进程数量,这两个数字越大代表系统越忙碌。内存分为虚拟内存、空闲内存、缓冲区、缓存区四个部分。swap的si是从磁盘中读的量,so是写入磁盘的量,如果这两个值过大代表系统效能很差;io的bi代表从磁盘读,bo是从磁盘写;system的in是每秒被中断的进程次数,cs是每秒进行的事件切换次数;cpu的us是非核心层CPU状态,sy是核心层的CPU状态,id是闲置的cpu,wa是等待IO消耗的cpu,st是虚拟机占用的cpu。
该命令的执行结果中最重要的两项是空闲内存和cpu空闲率。
查看所有磁盘的读写状态:vmstat -d
dmesg可以查看硬件信息,dmesg | grep CPU
可以查看CPU相关信息。
free查看内存使用状态,后跟选项:
-b: 以字节为单位显示
-k: 以KB为单位显示,默认就是以 KB为单位显示
-m: 以MB为单位显示
-g: 以GB为单位显示
详细CPU信息:cat /proc/cpuinfo
uptime可以显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看到这个数据。
uname可以查看系统与内核相关信息,选项:
-a: 查看系统所有相关信息;
-r: 查看内核版本;
-s: 查看内核名称。
查看操作系统位数(通过查看系统外部命令显示该信息):file /bin/ls
,file这个命令也可以用来查看文件类型,针对ascii文件、执行文件、数据文件都会有不同的输出结果。
查看系统发行版本:lsb_release -a
查看系统健康状态
查看系统健康状态:top [选项]
,默认3秒更新一次,可以用-d 秒数来指定更新时间。执行结果:
所有进程默认都是按照CPU使用率来排序的。在执行top命令时可以用P/M/N分别指定按照CPU使用率排序、按照内存使用率排序、按照PID排序。还可以执行?或h来查看帮助,按q退出top。
前五行的含义:
对于单核来说,平均负载值大于1就说明系统处于超出负荷状态,如果是8核大于8才说明超出负荷。
僵尸进程代表进程正在终止但还没有执行完全,如果长时间处于僵尸进程说明关闭时卡死,需要手动关闭。
一个很重要的指标是空闲CPU百分比,它如果小于20说明服务器处在高压状态。(注意wa是IO等待)
top命令是需要占用一定资源的,不能常开否则会影响其他服务。
将top的信息执行两次,将结果输出到文件中:top -b -n 2 > /tmp/top.txt
仅动态观察一个进程,加进程号即可:top -d 2 -p 14836