/proc 是一种存在于内存中的伪文件系统(pseudo filesystem),它的引入是为了可以从用户空间中读取Linux内核的内部数据结构。其中大多数伪文件都是只读的,不过有一些,比如/proc/sys/net/ipv4/forward(在第8章中讲过),可用于微调系统行为。
实战演练
/proc目录中包含了多个文件和目录。其中大多数文件可以使用cat、less或more命令来查看,其内容都是纯文本格式。
$ ls /proc1 buddyinfo cpuinfo execdomains irq kpagecgroup meminfo pagetypeinfo stat tty28 bus crypto filesystems kallsyms kpagecount misc partitions swaps uptime7 cgroups devices fs kcore kpageflags modules sched_debug sys version8 cmdline diskstats interrupts keys loadavg mounts schedstat sysvipc vmallocinfo9 config.gz dma iomem key-users locks mtrr self thread-self vmstatacpi consoles driver ioports kmsg mdstat net softirqs timer_list zoneinfo
$ less /proc/cpuinfo

$ more /proc/cpuinfo

系统中每一个运行的进程在/proc中都有一个对应的目录,目录名和进程ID相同。
以Bash为例,它的PID是4295(pgrep bash),那么就会存在一个对应的目录/proc/4295。该目录中包含了大量有关进程的信息。/proc/PID中的文件包括以下几个。
environ:包含与进程相关的环境变量。使用
cat /proc/4295/environ可以显示所有传递给进程4295的环境变量。[root@dev workspace]# cat /proc/1/environWSL2_CROSS_DISTRO=/wslHhaPGCWSL2_GUI_APPS_ENABLED=1WSL2_SYSTEM_DISTRO_SHARE=/wsljfCDOG
cwd:这是一个到进程工作目录的符号链接。
exe:这是一个到进程所对应的可执行文件的符号链接。
$ readlink /proc/4295/exe/bin/bash
fd:这是一个目录,包含了进程所用到的文件描述符。
0、1、2分别对应于stdin、stdout、stderr。- io:该文件显示了进程所读/写的字符数。
