/proc 中的文件
这里描述了 /proc 目录顶层中一些更有用的虚拟文件。
这并不是一个包罗万象的列表,而是提供一些文件及其用途的示例。
其中许多文件在适用的类中有进一步的描述。
- /proc/buddyinfo :此文件主要用于诊断内存碎片问题。
- /proc/cmdline :此文件显示在启动时传递给内核的参数。
- /proc/cpuinfo :此虚拟文件标识系统使用的处理器类型。
- /proc/crypto :该文件列出了 Linux 内核使用的所有已安装加密密码,包括每个密码的添加详细信息。
- /proc/devices :此文件显示当前配置的各种字符和块设备(不包括未加载模块的设备)。
- /proc/dma :此文件包含正在使用的已注册 ISA DMA 通道的列表。
- /proc/execdomains :该文件列出了 Linux 内核当前支持的执行域,以及它们支持的个性范围。
- /proc/filesystems :此文件显示内核当前支持的文件系统类型列表。第一列表示文件系统是否安装在块设备上。以 nodev 开头的那些未安装在设备上。第二列列出了支持的文件系统的名称。当没有指定一个文件系统作为参数时,mount 命令循环浏览此处列出的文件系统。
- /proc/interrupts :此文件记录 x86 架构上每个 IRQ 的中断数。
- /proc/iomem :此文件显示每个物理设备的系统内存的当前映射。
- /proc/ioports :此文件提供当前注册的端口区域列表,用于与设备进行输入或者输出通信。
- /proc/kcore :这个文件代表系统的物理内存,以core文件格式存储。此文件的内容旨在由调试器(例如 gdb)检查,并且不是人类可读的。
- /proc/kmsg :此文件用于保存内核生成的消息。然后这些消息会被其他程序接收,例如 /bin/dmesg。
- /proc/loadavg :该文件提供了 CPU 和 I/O 随时间变化的平均负载情况,以及正常运行时间和其他命令使用的添加数据。
- /proc/locks :该文件显示当前被内核锁定的文件。该文件的内容包含内部内核调试数据,根据系统的使用情况可能会有很大差异。
- /proc/mdstat :此文件包含多磁盘、RAID 配置的当前信息。
- /proc/meminfo :该文件报告了有关系统 内存 使用情况的大量有价值的信息。
- /proc/modules :此文件显示加载到内核中的所有模块的列表。大多数信息也可以使用 /sbin/lsmod 命令查看。
更改虚拟文件
/proc 目录中的大多数虚拟文件都是只读的。
但是,有些是可写的,可用于调整内核中的设置。
对于 /proc/sys 目录中的文件尤其如此。
要更改虚拟文件的值,请使用以下语法:
# echo value > /proc/file
例如,要更改主机名,请输入:
# echo www.example.com > /proc/sys/kernel/hostname
其他文件充当二进制或者布尔开关。
查看文件会返回 0(关闭或者假)或者 1(开或者真)。
例子:
# cat /proc/sys/net/ipv4/ip_forward 0
0 表示内核不转发网络数据包。
要打开数据包转发:
# echo 1 > /proc/sys/net/ipv4/ip_forward # cat /proc/sys/net/ipv4/ip_forward 1
/proc 中的其他目录
/proc 目录中的其他目录按主题对类似信息进行分组。
以下是这些目录的部分列表:
- /proc/bus :此目录包含有关系统上可用的各种总线的信息。 /proc/bus 中可用的子目录和文件因连接到系统的设备而异。
- /proc/bus/pci, /proc/bus/usb :我们可以通过对这些目录中的设备文件使用 cat 命令来获取系统上存在的所有 PCI 和 USB 设备的列表,但输出难以阅读和解释。要获得人类可读的设备列表,请运行 lspci 和 lsusb 命令。
- /proc/driver :此目录包含内核使用的特定驱动程序的信息。
- /proc/fs :此目录显示导出的文件系统。如果运行 NFS 服务器,键入 cat /proc/fs/nfsd/exports 将显示共享的文件系统和权限。
- /proc/irq :此目录用于将 IRQ 设置为 CPU 亲和性,这允许系统将特定 IRQ 连接到仅一个 CPU。或者,它可以排除 CPU 处理任何 IRQ。
- /proc/self/net :该目录提供了各种网络参数和统计信息的综合信息。该目录中的每个目录和虚拟文件都描述了系统网络配置的各个方面。 /proc/net 文件是该目录的符号链接。
- /proc/scsi :此目录中的主要文件是 /proc/scsi/scsi,其中包含每个已识别 SCSI 设备的列表。从此列表中可以找到设备类型以及型号名称、供应商、SCSI 通道和 ID 数据。
- /proc/sys :这个目录与 /proc 中的其他目录不同,因为它不仅提供有关系统的信息,还允许我们立即启用和禁用内核功能。如果文件具有写入权限,则可用于配置内核。更改 /proc/sys/ 文件中的值是通过将新值回显到文件中来完成的。例如,要将主机名更改为 www.example.com :
# echo www.example.com > /proc/sys/kernel/hostname
其他文件充当二进制或者布尔开关。值 0 表示关闭或者假。值为 1 表示打开或者为真。例如,要打开数据包转发:
# echo 1 > /proc/sys/net/ipv4/ip_forward
使用 echo 命令所做的更改不是持久的,并且会在系统重新启动时消失。要在系统重新启动后使配置更改生效,请将它们添加到 /etc/sysctl.conf 文件中。
- /proc/sys/dev :此目录为系统上的特定设备提供参数。
- /proc/sys/fs :此目录包含有关文件系统各个方面的选项和信息,包括配额、文件句柄和 inode 信息。
- /proc/sys/kernel :该目录包含各种不同的配置文件,直接影响内核的运行。
- /proc/sys/net :此目录包含有关各种网络主题的子目录。我们可以更改这些目录中的文件以调整正在运行的系统上的网络配置。
- /proc/sysvipc :此目录包含有关 System V 进程间通信 (IPC) 资源的信息。此目录中的文件与 System V IPC 对消息 (msg)、信号量 (sem) 和共享内存 (shm) 的调用相关。
- /proc/tty :此目录包含有关系统上可用和当前使用的 tty 设备的信息。驱动程序文件是当前使用的 tty 设备的列表。
查看虚拟文件
/proc 中的大多数虚拟文件都可以使用 cat、more 和 less 等命令查看。
例如,要查看有关系统 CPU 的信息,请输入:
# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 79 model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz stepping : 1 microcode : 0x1 cpu MHz : 2199.998 cache size : 30720 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt bogomips : 4399.99 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:
某些文件只能以 root 权限访问。
/proc 中的某些文件包含非人类可读的信息。
使用 lspci、free 和 top 等实用程序查看这些文件。
例如,使用 lspci 命令列出所有 PCI 设备:
# lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04) 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI 00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
proc 文件系统包含代表内核当前状态的特殊文件的层次结构。
它以其最初的用途命名,它是运行进程中结构的接口,以支持调试工具。
Linux 从 Solaris 中采用了这一点,但也将接口添加到了内核中。
proc 文件系统多年来变得相当混乱,因此 Linux 创建了 sysfs 文件系统来清理它。
/proc 目录中的文件包含有关硬件和系统上运行的当前进程的信息。
可以修改具有写权限的文件来更改内核的配置。
/proc 中的进程目录
/proc 目录包含带有数字名称的目录。
这些目录以程序的进程 ID 命名,并包含有关该进程的信息。
每个进程目录的所有者和组设置为运行该进程的用户。
每个进程目录包含几个文件,包括:
- cmdline : 启动进程时发出的命令
- cwd :指向进程当前工作目录的符号链接
- 环境:进程的环境变量列表
- exe : 此进程的可执行文件的符号链接
- fd :包含特定进程的所有文件描述符的目录
- maps :与进程关联的可执行文件和库文件的内存映射列表
- mem : 进程持有的内存(用户无法读取文件)
- root :指向进程根目录的链接
- stat : 进程的状态,包括运行状态和内存使用情况
- statm : 进程使用的内存状态
- status :以比 stat 或者 statm 更易读的形式显示进程的状态
虚拟文件系统
/proc目录下的文件是虚拟文件;因此,proc 被称为虚拟文件系统。
大多数虚拟文件的大小为零字节,但在查看时包含大量信息。
虚拟文件上的大多数时间和日期戳反映了当前时间和日期;但是,这些文件会不断更新。
/proc/interrupts、/proc/meminfo、/proc/cpuinfo 和 /proc/devices 等虚拟文件提供了系统硬件的视图。
其他的,如 /proc/filesystems 文件和 /proc/sys 目录提供系统配置信息和接口。
包含类似主题信息的文件被分组到虚拟目录中。
例如,进程目录包含有关系统上每个正在运行的进程的信息。