简介
这两天做资源自动化交付的项目,写的脚本比较多 ,在写脚本的过程中,遇到了很多Linux中的常用文件,这里列举一下,希望对大家能有所帮助吧。
今天主要讲述的是/proc文件夹下面的几个常用文件。在Linux系统中,系统调用是操作系统提供给应用程序使用操作系统服务的重要接口,但同时也正是通过系统调用机制,操作系统屏蔽了用户直接访问系统内核的可能性。幸运的是Linux提供了LKM机制可以使我们在内核空间工作,在LKM机制中一个重要的组成部分就是proc伪文件系统,它为用户提供了动态操作Linux内核信息的接口,是除系统调用之外另一个重要的Linux内核空间与用户空间交换数据的途径。
Q:
/proc/meminfo文件里面保存了什么东西?
/proc/meminfo是一个接口,它可以帮助我们了解系统内存的使用状况,我们最常用的free操作,vmstate操作都是通过它来获取数据的,这也就是说/proc/meminfo文件中包含的信息比上面两个命令都多,下面我们罗列一下比较重要的一些来做说明:
[root@tk-dba-mysql proc]# cat /proc/meminfo
MemTotal: kB
MemFree: kB
Buffers: kB
Cached: kB
SwapCached: kB
Active: kB
Inactive: kB
Active(anon): kB
Inactive(anon): kB
Active(file): kB
Inactive(file): kB
Unevictable: kB
Mlocked: kB
SwapTotal: kB
SwapFree: kB
Dirty: kB
Writeback: kB
AnonPages: kB
Mapped: kB
Shmem: kB
Slab: kB
SReclaimable: kB
SUnreclaim: kB
KernelStack: kB
PageTables: kB
NFS_Unstable: kB
Bounce: kB
WritebackTmp: kB
CommitLimit: kB
Committed_AS: kB
VmallocTotal: kB
VmallocUsed: kB
VmallocChunk: kB
Hugepagesize: kB
DirectMap4k: kB
DirectMap2M: kB
先来简单对一些重要的参数做下介绍吧,:
MemTotal:所有可用的RAM大小
MemFree:被系统留着未使用的内存
Buffers:用来给文件做缓冲的内存大小
Cached:被高速缓存使用的内存大小
SwapCached:被高速缓存使用的交换空间的大小
Active/Inactive:活跃/不活跃使用的高速缓存页面大小
SwapTotal:交换空间的总大小
SwapFree:未被使用的交换空间的大小
看到这里,有没有发现加粗的指标有些面熟,是不是想起了我们最常用的free命令的一些输出:
[root@tk-dba-mysql proc]# free -mt
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
Total:
是的,这里的值就是通过在/proc/meminfo中的值经过换算得到的。
当然,还有其他一些信息在/proc/meminfo中,我们不在详细讲述,有兴趣的同学可以再研究研究,为什么到这里就截止了呢?在写脚本的过程中,经常会使用到当前的内存值,有时候觉得从free -mt中过滤比较麻烦,我们就使用cat /proc/meminfo|grep MemTotal的方法来进行过滤。
Q:
/proc/net/dev文件的内容?
我们可以利用proc/net/dev来获取网卡的网速及网络包的收发情况,这个文件中保存了网络适配器和统计信息,也就是说,当前走流量的网卡信息都会存储在这个文件中:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast |bytes packets errs drop fifo colls carrier compressed
lo:
eth0:
针对这里面的一些参数,我们做简单说明即可:
bytes:接口发送或接受的数据的总字节数
packets:接口发送或接受的数据包总数
errs:由设备驱动程序检测到的发送或接受错误的总数
drop:设备驱动程序丢弃的数据包总数
fifo:FIFO缓冲区错误的数量
frame:分组帧错误的数量
compressed:设备驱动程序发送或者接受的压缩数据包
multicast:设备驱动程序发送或接收的多播帧数
上面这些都是些常规介绍,我本人应用这个文件里面的内容主要是为了过滤网卡信息。
Q:
/proc/cpuinfo cpu信息?
这个文件中包含了cpu相关的内容,因为文件内容比较多,这里就不一一展示了,就给出一些这个文件的常用信息获取方法:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
#查看cpu型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
# cat /proc/cpuinfo | grep 'siblings'