/proc - 获取 Linux 进程和硬件信息
今天,我们将深入研究 /proc 目录的内容,以更好地了解其功能。需要注意的是,/proc 目录是所有 Linux 发行版的共同功能,无论其风格或架构如何。
我们必须立即澄清的一个误解是,/proc 目录不是传统意义上的传统文件系统。
它是一个虚拟文件系统,包含有关 procfs 中进程和其他系统相关数据的信息。该文件系统映射到/proc目录,并在系统启动过程中挂载。
网站搜索
今天,我们将深入研究 /proc 目录的内容,以更好地了解其功能。需要注意的是,/proc 目录是所有 Linux 发行版的共同功能,无论其风格或架构如何。
我们必须立即澄清的一个误解是,/proc 目录不是传统意义上的传统文件系统。
它是一个虚拟文件系统,包含有关 procfs 中进程和其他系统相关数据的信息。该文件系统映射到/proc目录,并在系统启动过程中挂载。
/proc 文件系统充当内核数据结构和运行时信息的接口,它为用户和应用程序提供了一种通过公开来访问有关进程、系统配置、硬件等详细信息的方法这些数据通过虚拟文件的层次结构。
要查看 /proc 文件系统中文件和目录的完整列表,可以使用 ls 命令,如下所示。
ls /proc
当您导航到 /proc 目录时,您会注意到有一些听起来很熟悉的文件,然后是一大堆编号的目录,每个目录对应于系统上正在运行的进程。
cd /proc
ls
这些编号的目录代表进程,即进程 ID (PID),并且在其中包含占用它们的命令。这些文件包含系统信息,例如内存 (meminfo)、CPU 信息 (cpuinfo) 和可用文件系统。
以下是您将遇到的一些关键文件和目录:
/proc/cpuinfo
– 列出有关系统上 CPU 的信息,例如型号、速度和核心数量。/proc/meminfo
– 列出有关内存使用情况和统计信息的详细信息,其中包含内存总量、可用内存以及每个进程使用的内存。/proc/filesystems
– 包含内核支持的所有文件系统的列表。/proc/sys
– 列出内核的配置和运行时参数。/proc/loadavg
– 显示不同时间间隔(例如 1 分钟、5 分钟和 15 分钟)的系统负载平均值。/proc/self
– 指向进程自己目录的符号链接。/proc/stat
– 包含有关系统的各种统计信息,例如正在运行的进程数、中断数以及每个 CPU 状态所花费的时间量。/proc/uptime
– 包含系统已运行的时间量。/proc/PID
– 包含有关特定进程的信息,其中 PID 是进程 ID。/proc/meminfo用于显示Linux系统的内存使用情况和统计信息,其中包含各种内存相关指标的快照,可用于监控系统性能和资源利用率。
cat /proc/meminfo
正如你所看到的,/proc/meminfo包含了一堆关于你的系统内存的信息,包括可用总量(以kb为单位)和前两项的可用量线。
对 /proc 中的任何文件运行 cat 命令都会输出其内容。通过运行以下命令可以在手册页中获得有关任何文件的信息:
man 5 /proc/<filename>
我将简要介绍一下 /proc 文件:
在/proc的编号目录中,您会发现一些文件和链接。请记住,这些目录的编号与在其中运行的命令的 PID 相关。
例如,导航到 /proc/
可提供以下详细信息:
/proc//cmdline
– 用于启动进程的命令行参数。/proc//status
– 详细的状态信息,包括内存使用情况和进程统计信息。/proc//fd
– 进程打开的文件的符号链接。我们以查看名为 /proc/12 的文件夹为例。
cd /proc/12
ls
如果我运行:
cat /proc/12/status
我得到以下信息:
那么这是什么意思?嗯,重要的部分在顶部。从状态文件中我们可以看出,该进程属于rcu_tasks_rude_kthread。显然,它的当前状态是idle,它的进程ID是12。
我们还可以看到谁在运行这个进程,因为UID和GID都是0,表明这个进程属于root用户。
在任何编号的目录中,您都会有类似的文件结构,最重要的文件结构及其描述如下:
您还会注意到编号目录中的几个链接:
这应该可以帮助您开始熟悉 /proc 目录。它还应该提供对许多命令如何获取其信息的深入了解,例如 uptime、lsof、mount 和 ps,仅举几例。