在 /proc 目录下,可以看到许多以数字命名的文件夹,例如 100038、2299、98560 等。这些数字对应的是各个进程的 PID(进程标识符)。每个进程在内核中都有一个唯一的编号,即 PID,用来区分不同的进程。这些以数字命名的文件夹中记录了各个进程的相关信息。不同的信息通过不同的虚拟文件呈现。
以下是对 /proc 目录下各个文件和子目录的详细说明:
进程相关信息
/proc/[pid]:每个正在运行的进程都有一个对应的目录,[pid] 是进程的 ID,包含了关于该进程的各种信息。
/proc/[pid]/cmdline:启动该进程的命令行参数。
/proc/[pid]/cwd:指向进程当前的工作目录的符号链接。
/proc/[pid]/environ:进程的环境变量。
/proc/[pid]/exe:指向进程的可执行文件的符号链接。
/proc/[pid]/fd/:包含指向进程打开的文件描述符的符号链接。
/proc/[pid]/stat:进程的状态信息,包含进程的详细状态。
/proc/[pid]/status:进程的状态信息,以更易读的格式显示。
系统相关信息
/proc/cpuinfo:关于 CPU 的详细信息,包括每个 CPU 的型号、频率、缓存大小等。
/proc/meminfo:关于系统内存的详细信息,包括总内存、可用内存、缓存大小等。
/proc/uptime:系统启动后的时间和空闲时间。
/proc/version:内核版本信息,包括编译者和编译时间。
/proc/loadavg:系统负载平均值,显示最近 1、5、15 分钟的系统平均负载。
/proc/filesystems:内核支持的文件系统列表。
/proc/sys/:内核参数的配置,通过该目录可以调整和查看内核参数。
其他有用的虚拟文件
/proc/cmdline:内核启动参数。
/proc/iomem:IO 设备的内存使用情况。
/proc/interrupts:显示被占用的中断号和占用者相关的信息。
/proc/ioports:IO 端口的使用情况。
/proc/kcore:系统物理内存映像,不可读取,一般用于内核调试。
/proc/loadavg:系统平均负载。
/proc/meminfo:物理内存和交换分区使用情况。
/proc/modules:当前加载的内核模块列表。
/proc/mounts:当前挂载的文件系统列表。
/proc/partitions:系统识别的分区表。
/proc/swaps:交换分区的利用情况。
/proc/version:内核版本信息。
/proc/uptime:系统运行时间。
1、使用 cat 命令读取 /proc 文件系统
cat 命令是一个简单且常用的方式来读取 /proc 目录下的虚拟文件。
查看内核版本:
cat /proc/version
输出类似于:
Linux version 5.4.0-42-generic (buildd@lgw01-amd64-040) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020
查看系统负载:
cat /proc/loadavg
输出类似于:
0.00 0.01 0.05 1/103 1234
2、在应用程序中使用open()和read()函数读取/proc文件系统
在编程中,可以使用标准的文件操作函数来读取 /proc 文件系统中的内容。以下是一个简单的 C 程序示例:
#include #include #include #include #define BUFFER_SIZE 1024 void read_proc_file(const char *filepath) { int fd = open(filepath, O_RDONLY); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } char buffer[BUFFER_SIZE]; ssize_t bytesRead; while ((bytesRead = read(fd, buffer, sizeof(buffer) - 1)) > 0) { buffer[bytesRead] = '\0'; printf("%s", buffer); } if (bytesRead == -1) { perror("read"); close(fd); exit(EXIT_FAILURE); } close(fd);} int main() { read_proc_file("/proc/version"); return 0;}
输出类似于:
Linux version 5.4.0-42-generic (buildd@lgw01-amd64-040) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020
通过 cat 命令和编程接口,用户和开发者可以方便地访问和读取 /proc 文件系统中的实时信息。这些信息对于系统监控、调试和优化非常有用。
暂无评论