linux proc文件系统

linux proc是一个虚拟文件系统,是内核模块向进程发送信息的机制,proc只存在于内存中而非硬盘上。

proc由内核控制,没有承载的设备。proc主要存放由内核控制的状态信息。proc文件系统和常规的文件系统一样,将自己注册到虚拟文件系统层(VFS) 。

cat /proc/cpuinfo
file /proc/cpuinfo

/proc/cpuinfo: empty

查看proc文件列表

cd /proc
ls -l

加载proc

如果proc未加载可使用如下命令:

mount -t proc proc /proc

mount: proc is already mounted or /proc busy

    proc is already mounted on /proc

    proc is already mounted on /run/docker/netns/default

proc信息

proc提供有关内核状态、计算机属性、运行中进程的状态和物理环境信息。proc信息可使用more、less 、cat、vi、vim进行查看。

cat /proc/cpuinfo

proc进程信息

proc可获取进程信息,/proc中有相当数量的数字命名目录。这些目录对应具体的进程id。目录中包含有关进程状态和环境信息的文件。比如查看有关systemd进程信息。

ls -l /proc/1

会看到几十个对应的文件和目录。

查看当前进程信息

cd /proc/self

proc内核交互

proc大部分文件是只读的,通过proc可写文件能够与内核进行交互。其中/proc/sys目录中存放的可读写文件目录,可改变内核行为。

/proc/sys/kernel 包含通用内核行为的信息。

/proc/sys/net 包含了计算机网络属性的信息。

proc常用命令清单

以下列出了一些有用的目录清单:

/proc/fb:可用帧缓冲区的列表。

/proc/cpuinfo:列出有关系统CPU的信息-系列,供应商信息,型号,核心速度和CPU标志信息。

/proc/devices:包含字符和块设备的列表。

/proc/diskstats:列出与逻辑磁盘设备有关的信息。

/proc/filesystems:内核支持的文件系统的列表。

/proc/interrupts:可以在此处找到中断信息。

/proc/iomem:包含每个物理设备的系统内存映射。

/proc/ioports:包含当前注册的端口区域列表,用于与设备进行输入或输出通信。

/proc/irq:此目录包含与系统上存在的IRQ对应的目录。SMP亲和力信息可以在这里修改。

/proc/meminfo:包含内核内存信息。

/proc/modules:包含内核中当前加载的模块。“lsmod”命令从这里获取信息。

/proc/mounts:包含有关挂载的信息。还列出了正在使用的文件系统和正在使用的挂载选项。

/proc/net:网络堆栈信息。

/proc/partitions:内核已标识为分区的设备号、大小和/dev名称的列表。

/proc/slabinfo:包含内核板统计信息。

/proc/swap:活动交换分区及大小的列表。

/proc/sys:可以在这里找到动态配置的内核选项。

/proc/uptime:内核自启动以来一直运行并处于空闲模式的时间(以秒为单位)。

/proc/version:包含用于构建内核的内核信息、版本号、gcc版本号。

更多信息参考/proc目录下的文件。