/proc文件系统
来源:互联网 发布:java final成员变量 编辑:程序博客网 时间:2024/05/01 20:16
/proc文件系统
为了提供更为简便的方法来访问内核信息,许多现代UNIX实现了一个/proc虚拟文件系统。该文件系统驻留于/proc目录中,包含了各种用于展示内核信息的文件,并且允许进程通过常规文件I/O系统调用来方便地读取。之所以将/proc系统称为虚拟,是因为其包含的文件和子目录并未存储于磁盘上,而是由内核在进程访问此类信息时动态创建而成。
获取与进程相关的信息
/proc/pid
对于系统中每个进程,内核都提供了相应的目录,命名为/proc/pid,其中PID是进程的ID。在此目录中的各种文件和子目录包含了进程相关的信息。
如通过查看/proc/1/目录下的文件。可以获取init进程的信息,该进程的ID总为1,每个/proc/pid目录中都有一个命名为status的文件,提供了有关该进程的一系列信息。
[root@localhost ~]# cat /proc/1/status
Name: systemd 进程名
State: S (sleeping) 进程状态
Tgid: 1 线程组ID(传统的进程PID,getpid()返回的就是这个)
Pid: 1 线程ID(gettid())
PPid: 0 父进程ID
TracerPid: 0 跟踪进程的PID(0表示没有跟踪)
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256 当前分配的文件描述符插槽
Groups: 补充组ID
VmPeak: 6508 kB 峰值虚拟内存大小
VmSize: 6472 kB 当前虚拟内存大小
VmLck: 0 kB 锁定内存
VmPin: 0 kB
VmHWM: 3648 kB 峰值驻留集大小
VmRSS: 3648 kB 当前驻留集大小
VmData: 1556 kB 数据段大小
VmStk: 136 kB 栈大小
VmExe: 896 kB 可执行代码大小
VmLib: 3652 kB 共享lib代码大小
VmPTE: 20 kB 页表大小
VmSwap: 0 kB
Threads: 1
SigQ: 1/4684 当前/最大 队列信号
SigPnd: 0000000000000000 线程挂起信号
ShdPnd: 0000000000000000 进程挂起信号
SigBlk: 7be3c0fe28014a03 阻塞信号
SigIgn: 0000000000001000 忽略信号
SigCgt: 00000001800004ec 捕获信号
CapInh: 0000000000000000 可继承能力
CapPrm: ffffffffffffffff 允许能力
CapEff: ffffffffffffffff 有效能力
CapBnd: ffffffffffffffff 能力边界集
Cpus_allowed: 1 CPU允许掩码
Cpus_allowed_list: 0 和上面的一样,链表形式
Mems_allowed: 1 内存节点允许掩码
Mems_allowed_list: 0 和上面一样,链表形式
voluntary_ctxt_switches: 1274 主动上下文切换
nonvoluntary_ctxt_switches: 2609 被迫上下文切换
Name: systemd 进程名
State: S (sleeping) 进程状态
Tgid: 1 线程组ID(传统的进程PID,getpid()返回的就是这个)
Pid: 1 线程ID(gettid())
PPid: 0 父进程ID
TracerPid: 0 跟踪进程的PID(0表示没有跟踪)
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256 当前分配的文件描述符插槽
Groups: 补充组ID
VmPeak: 6508 kB 峰值虚拟内存大小
VmSize: 6472 kB 当前虚拟内存大小
VmLck: 0 kB 锁定内存
VmPin: 0 kB
VmHWM: 3648 kB 峰值驻留集大小
VmRSS: 3648 kB 当前驻留集大小
VmData: 1556 kB 数据段大小
VmStk: 136 kB 栈大小
VmExe: 896 kB 可执行代码大小
VmLib: 3652 kB 共享lib代码大小
VmPTE: 20 kB 页表大小
VmSwap: 0 kB
Threads: 1
SigQ: 1/4684 当前/最大 队列信号
SigPnd: 0000000000000000 线程挂起信号
ShdPnd: 0000000000000000 进程挂起信号
SigBlk: 7be3c0fe28014a03 阻塞信号
SigIgn: 0000000000001000 忽略信号
SigCgt: 00000001800004ec 捕获信号
CapInh: 0000000000000000 可继承能力
CapPrm: ffffffffffffffff 允许能力
CapEff: ffffffffffffffff 有效能力
CapBnd: ffffffffffffffff 能力边界集
Cpus_allowed: 1 CPU允许掩码
Cpus_allowed_list: 0 和上面的一样,链表形式
Mems_allowed: 1 内存节点允许掩码
Mems_allowed_list: 0 和上面一样,链表形式
voluntary_ctxt_switches: 1274 主动上下文切换
nonvoluntary_ctxt_switches: 2609 被迫上下文切换
每个/proc/PID目录下的文件节选
cmdline 以\0分隔的命令行参数
cwd 执行当前工作目录的符号链接
environ NAME=value键值对环境列表
exe 指向正在执行的符号链接
fd 文件目录,包含了指向由进程打开文件的符号链接,每个符号链接的名称都与描述符相匹配
maps 内存映射
mem 进程虚拟内存
mounts 进程的安装点
root 指向根目录的符号链接
status 各种信息
task 为进程中每个线程均包含一个子目录
为了方面起见,任何进程都可以使用符号链接/proc/self/来访问其自己的/proc/pid目录
线程:/proc/pid/task目录
Linux 2.4增加了线程组的概念,正式支持POSIX线程模型。因为线程组中的一些属性对于线程而言是唯一的,所以linux2.4在/proc/pid目录下增加了一个task子目录。针对进程中的每个线程,内核提供了以/proc/pid/task/tid命名的子目录,其中TID是该线程的线程ID
每个/proc/pid/task/tid子目录中都有一套类似于/proc/pid目录内容的文件和目录。因为线程共享了多个属性,所以这些文件中的许多信息对进程中各个线程而言都是相同的。然而,这些文件也显示了每个线程的独特信息,故而是合理的。例如,在线程组的/proc/pid/task/tid/status文件中,存在那种对每个线程而言,内容都有可能不同的字段,state,pid,sigpnd,sigblk,capinh,capprm,capeff和capbnd就在此列
/proc目录下的系统信息
/proc 各种系统信息
/proc/net 有关网络和套接字的状态信息
/proc/sys/fs 文件系统相关的设置
/proc/sys/kernel 各种常规内核设置
/proc/sys/net 网络和套接字设置
/proc/sys/vm 内存管理设置
/proc/sysvipc 有关SystemV IPC对象信息
访问/proc/文件
1、通常使用shell脚本来访问/proc目录下的文件(使用诸如python或者perl之类的脚本语言)
2、也可以从程序中使用常规I/O系统调用来访问/proc目录下的文件。但在访问这些文件时,有如下限制:
a、/proc目录下的一些文件时只读的
b、/proc目录下的一些文件仅能由文件拥有者(或特权进程)读取。例如/proc/pid目录下的所有文件都属于拥有相应进程的用户
c、/proc目录的其他文件大多属于root用户,并且也仅有root用户能够修改那些可修改的文件。
0 0
- proc文件系统
- proc文件系统
- /proc 文件系统
- proc 文件系统
- proc文件系统
- /proc文件系统
- /proc 文件系统
- proc文件系统
- proc文件系统
- proc文件系统
- proc文件系统
- /proc 文件系统
- /proc文件系统
- Proc文件系统
- /proc文件系统
- PROC 文件系统
- Proc文件系统
- proc文件系统
- 算法竞赛入门经典训练指南
- LNMP一键安装包 V1.1 发布
- hdu-2509 Be the Winner
- Windows 上同时使用Python2.x 与 3.x
- EM算法
- /proc文件系统
- 如何成为坐拥百万的WEB开发者
- Copy-and-swap
- Virtualbox虚拟Ubuntu共享文件夹设置
- 谈谈防 SQL 注入式攻击策略
- 工具类commons-io的文件监控
- POJ1546 Basically Speaking
- Could not open ServletContext resource [/WEB-INF/applicationContext.xml]解决方法
- VIM 学习