/proc文件系统与常用进程管理命令总结

/proc文件系统是Linux内核与用户空间交互的一个接口,提供了动态生成的虚拟文件,用于获取系统和进程信息。它不存储于硬盘,而是内存在中,通过文件形式展示,如CPU信息、内存状态、进程详情等。/proc目录下的文件可以被用于收集系统信息,如/cpuinfo提供CPU详情,/meminfo提供内存状态,/mounts列出已加载文件系统。此外,可以通过/proc与内核交互,改变系统设置。进程管理命令如ps用于查看进程,top显示实时资源使用情况,kill和pkill用于发送信号结束进程,nice和renice调整进程优先级,ulimit控制资源限制。
摘要由CSDN通过智能技术生成

之前看APUE的时候,可能是APUE写的太早了,里面并没有涉及到/proc 文件系统。这个部分也就没有详细的去看和总结了,今天突然想到如果要查看CPU信息怎么办?当然是cat /proc/cpuinfo~于是便顺便关注了一下这个/proc。。。

/proc 文件系统

在一些比较老的UNIX系统中,通常并没有简单的方法来获取甚至修改内核的属性并告知用户一些系统和进程的信息。
一些老旧的UNIX系统会允许root权限的用户深入内核内存中的数据结构进行相关操作。。。这要求需要具备内核数据结构的专业知识。

/proc 文件系统提供了一个基于文件的Linux 内部接口。它可以用于确定系统的各种不同设备和进程的状态。对他们进行配置。因而,理解和应用有关这个文件系统的知识是理解你的Linux 系统的关键。

/proc — 一个虚拟文件系统

/proc 文件系统是一种内核和内核模块用来向进程(process) 发送信息的机制(所以叫做/proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取有关进程的有用信息,在运行中(on the fly) 改变设置(通过改变内核参数)。
与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。如果你察看文件/proc/mounts (和mount 命令一样列出所有已经加载的文件系统),键入 cat /proc/mounts | grep proc 你会看到其中 一行是这样的:

/proc /proc proc rw 0 0

/proc 由内核控制,没有承载/proc 的设备。因为/proc 主要存放由内核控制的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存。对/proc 进行一次’ls -al’ 可以看到大部分文件都是0 字节大的;不过察看这些文件的时候,确实可以看到一些信息。这怎么可能?这是因为/proc 文件系统和其他常规的文件系统一样把自己注册到虚拟文件系统层(VFS) 了。然而,直到当VFS 调用它,请求文件、目录的i-node 的时候,/proc 文件系统才根据内核中的信息建立相应的文件和目录。
简单来说:之所以把/proc文件系统称为虚拟,是因为其包含的文件和子目录并没有存储在磁盘上,而是由内核在进程访问此类信息时候动态创建而成的。

加载/proc 文件系统

如果系统中还没有加载proc 文件系统,可以通过如下命令加载proc 文件系统:

mount -t proc proc /proc

上述命令将成功加载你的proc 文件系统。更多细节请阅读mount 命令的man page。

查看/proc 文件

/proc 的文件可以用于访问有关内核的状态、计算机的属性、正在运行的进程的状态等信息。大部分/proc 中的文件和目录提供系统物理环境最新的信息。
尽管/proc 中的文件是虚拟的,但它们仍可以使用任何文件编辑器或像’more’, ‘less’或’cat’这样的程序来查看。当编辑程序试图打开一个虚拟文件时,这个文件就通过内核中的信息被凭空地(on the fly) 创建了。

lijiaheng@lijiaheng-N550JK:/proc$ls -l /proc/cpuinfo
-r–r–r– 1 root root 0 3月 7 14:31 /proc/cpuinfo
lijiaheng@lijiaheng-N550JK:/proc$ file /proc/cpuinfo
/proc/cpuinfo: empty
lijiaheng@lijiaheng-N550JK:/proc$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz
stepping : 3
microcode : 0x17
cpu MHz : 2400.093
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4

/proc 目录下的系统信息

proc 文件系统可以被用于收集有用的关于系统和运行中的内核的信息。

下面是一些重要的文件:

  • /proc/cpuinfo - CPU 的信息(型号, 家族, 缓存大小等)
  • /proc/meminfo - 物理内存、交换空间等的信息
  • /proc/mounts - 已加载的文件系统的列表
  • /proc/devices - 可用设备的列表
  • /proc/filesystems - 被支持的文件系统
  • /proc/modules - 已加载的模块
  • /proc/version - 内核版本
  • /proc/cmdline - 系统启动时输入的内核命令行参数

proc 中的文件远不止上面列出的这么多。想要进一步了解可以对/proc 的每一个文件都more一下获取更多的有关/proc 目录中的文件的信息。我建议使用more而不是cat,除非你知道这个文件很小,因为有些文件(比如kcore) 可能会非常长。

/proc/cmdline 文件

这个文件给出了内核启动的命令行。它和用于进程的cmdline 项非常相似。
示例:
[root@localhost proc]# cat cmdline
ro root=LABEL=/ rhgb quiet

/proc/cpuinfo 文件

这个文件提供了有关系统CPU 的多种信息。这些信息是从内核里对CPU 的测试代码中得到的。文件列出
了C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值