Linux 内核 — 无持久存储的文件系统
可组织、提供或交换并不存储在块设备上的信息,这些信息可以由内核动态生成。
一、procfs
proc 文件系统,全称:进程数据文件系统(process data filesystem,procfs的全称) ,挂载在 /proc,一种虚拟文件系统,其信息不能从块设备读取。只有在读取文件内容时,才动态生成相应的信息。
用途
- 实时获取内核各个子系统的信息
- 系统运行时获取、修改内核参数(系统控制机制:sysctl)
主要内容
- 特定进程的数据
# 以进程号(pid) 10133 为例
# 查看进程数据目录
ls /proc/10133
# 查看程序执行命令行
cat /proc/10133/cmdline
# 查看程序的环境变量
cat /proc/10133/environ
# 查看进程使用的库、自身程序的二进制文件的内存映射
cat /proc/10133/maps
# 查看进程状态信息
cat /proc/10133/status
cat /proc/10133/stat
cat /proc/10133/statm
# 查看进程当前工作目录
ls -l /proc/10133/cwd
# 查看进程的二进制程序路径
ls -l /proc/10133/exe
# 查看进程运行时的根目录
ls -l /proc/10133/root
- 系统信息
# 查看与设备通信的内存地址和端口信息
cat /proc/iomem
cat /proc/ioports
# 查看内存使用情况
cat /proc/meminfo
# 内核代码调试符号表
cat /proc/kallsyms
# 查看当前中断情况
cat /proc/interrupts
# 查看平均系统负载
cat /proc/loadavg
# 查看系统已运行时间
cat /proc/uptime
- 网络信息
/proc/net 子目录提供了内核的各种网络选项的有关数据。其中保存了各种协议和设备数据。
# 查看通过系统的网络接口传输的数据量的统计数据(包括环回接口)
# 该信息可用于检查网络的传输质量,因为其中也包括了传输不正确的数据包、被丢弃的数据包和冲突相关的数据
cat /proc/net/dev
- 系统控制参数
ls -l /proc/sys
ls -l /proc/sys/vm
二、sysfs
sysfs,一个向用户空间导出内核对象的文件系统,它不仅提供了察看内核内部数据结构的能力,还可以修改这些数据结构,内核对象的层次化组织直接反映到了sysfs的目录布局中。
由于系统的所有设备和总线都是通过 kobject 组织的,所以 sysfs 提供了系统的硬件拓扑的一种表示。sysfs的标准挂载点是 /sys。
参考:深入Linux内核架构