当前位置:  技术问答>linux和unix

linux/proc

    来源: 互联网  发布时间:2014-12-19

    本文导语:  有谁知道linux/proc下面对应的意义? 关于进程,上下文切换,磁盘读写请求! 如有电子文档,重谢! | PROC Section: ;Linux Programmer's Manual; (5) Updated: ;22 July 1996; Index Return to Main Contents ------...

有谁知道linux/proc下面对应的意义?
关于进程,上下文切换,磁盘读写请求!
如有电子文档,重谢!

|
PROC
Section: ;Linux Programmer's Manual; (5)
Updated: ;22 July 1996;
Index Return to Main Contents
--------------------------------------------------------------------------------
   
NAME [名字]
proc - 进程信息伪文件系统   
描述
/proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明 
/dev/kmem. /proc里的大多数文件都是只读的, 
但也可以通过写一些文件来改变内核变量. 
下面对整个 /proc 目录作一个大略的介绍. 


[number] 
在 /proc 目录里, 每个正在运行的进程都有一个以该进程 ID 命名的子目录, 
其下包括如下的目录和伪文件. 
cmdline 
该文件保存了进程的完整命令行. 如果该进程已经被交换出内存, 
或者该进程已经僵死, 那么就没有任何东西在该文件里, 
这时候对该文件的读操作将返回零个字符. 该文件以空字符 null 
而不是换行符作为结束标志. 
cwd 
一个符号连接, 指向进程当前的工作目录. 例如, 要找出进程 20 的 cwd, 你可以: 

cd /proc/20/cwd; /bin/pwd

请注意 pwd 命令通常是 shell 内置的, 在这样的情况下可能工作得不是很好. 

environ 
该文件保存进程的环境变量, 各项之间以空字符分隔, 结尾也可能是一个空字符. 
因此, 如果要输出进程 1 的环境变量, 你应该: 

(cat /proc/1/environ; echo) | tr ";00"; ";n";

(至于为什么想要这么做, 请参阅 lilo(8).) 

exe 
也是一个符号连接, 指向被执行的二进制代码. 在 Linux 2.0 或者更早的版本下, 对 
exe 特殊文件的 readlink(2) 返回一个如下格式的字符串: [设备号]:节点号 
举个例子, [0301]:1502 就是某设备的 1502 节点, 该设备的主设备号为 03 (如 
IDE, MFM 等驱动器), 从设备号为 01 (第一个驱动器的第一分区). 而在 Linux 2.2 
下, readlink(2) 则给出命令的实际路径名. 另外, 
该符号连接也可以正常析引用(试图打开 exe 文件实际上将打开一个可执行文件). 
你甚至可以键入 /proc/[number]/exe 来运行 [number] 进程的副本. 带 -inum 
选项的 find(1) 命令可以定位该文件. 
fd 
进程所打开的每个文件都有一个符号连接在该子目录里, 以文件描述符命名, 
这个名字实际上是指向真正的文件的符号连接,(和 exe 记录一样).例如, 0 
是标准输入, 1 是标准输出, 2 是标准错误, 等等. 
程序有时可能想要读取一个文件却不想要标准输入,或者想写到一个文件却不想将输出送
到标准输出去,那么就可以很有效地用如下的办法骗过(假定 -i 是输入文件的标志, 
而 -o 是输出文件的标志): 

foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...


这样就是一个能运转的过滤器. 请注意该方法不能用来在文件里搜索, 这是因为 fd 
目录里的文件是不可搜索的. 在 UNIX 类的系统下, /proc/self/fd/N 基本上就与 
/dev/fd/N 相同. 实际上, 大多数的 Linux MAKEDEV 脚本都将 /dev/fd 符号连接到 
[..]/proc/self/fd 上. 
maps 
该文件包含当前的映象内存区及他们的访问许可. 格式如下: 
address           perms offset   dev   inode
00000000-0002f000 r-x-- 00000400 03:03 1401
0002f000-00032000 rwx-p 0002f400 03:03 1401
00032000-0005b000 rwx-p 00000000 00:00 0
60000000-60098000 rwx-p 00000400 03:03 215
60098000-600c7000 rwx-p 00000000 00:00 0
bfffa000-c0000000 rwx-p 00000000 00:00 0

address 是进程所占据的地址空间, perms 是权限集: 

r = read
w = write
x = execute
s = shared
p = private (copy on write)

offset 是文件或者别的什么的偏移量, dev 是设备号(主设备号:从设备号), 而 
inode 则是设备的节点号. 0 表明没有节点与内存相对应, 就象 bss 的情形. 

在 Linux 2.2 下还增加了一个域给可用的路径名. 

mem 
该文件并不是 mem (1:1) 设备, 尽管它们有相同的设备号. /dev/mem 
设备是做任何地址转换之前的物理内存, 而这里的 mem 
文件是访问它的进程的内存.目前这个 mem 还不能 mmap(2) 
(内存映射)出去,而且可能一直要等到内核中增加了一个通用的 mmap(2) 
以后才能实现. (也许在你读本手册页时这一切已经发生了) 
mmap 
mmap(2) 做的 maps 映射目录,是和 exe, fd/* 等类似的符号连接. 请注意 maps 
包含了比 /proc/*/mmap 更多的信息, 所以应该废弃 mmap. ";0"; 通常指 
libc.so.4. 在 linux 内核 1.1.40 里, /proc/*/mmap 被取消了. (现在是 真的 
废弃不用了!) 
root 
依靠系统调用 chroot(2), unix 和 linux 可以让每个进程有各自的文件系统根目录. 
由 chroot(2) 系统调用设置.根指向文件系统的根,性质就象 exe, fd/* 等一样. 
stat 
进程状态信息, 被命令 ps(1) 使用. 现将该文件里各域, 以及他们的 scanf(3) 
格式说明符, 按顺序分述如下: 
pid %d
进程标识. 
comm %s
可执行文件的文件名, 包括路径. 该文件是否可见取决于该文件是否已被交换出内存. 

state %c
";RSDZT"; 中的一个, R 是正在运行, S 是在可中断的就绪态中睡眠, D 
是在不可中断的等待或交换态中睡眠, Z 是僵死, T 
是被跟踪或被停止(由于收到信号). 
ppid %d
父进程 PID. 
pgrp %d
进程的进程组 ID. 
session %d
进程的会话 ID. 
tty %d
进程所使用终端. 
tpgid %d
当前拥有该进程所连接终端的进程所在的进程组 ID. 
flags %u 
进程标志. 目前每个标志都设了数学位, 所以输出里就不包括该位. crt0.s 
检查数学仿真这可能是一个臭虫, 因为不是每个进程都是用 c 编译的程序. 
数学位应该是十进制的 4, 而跟踪位应该是十进制的 10. 
minflt %u
进程所导致的小错误(minor faults)数目, 这样的小错误(minor 
faults)不需要从磁盘重新载入一个内存页. 
cminflt %u
进程及其子进程所导致的小错误(minor faults)数目. 
majflt %u
进程所导致的大错误(major faults)数目, 这样的大错误(major 
faults)需要重新载入内存页. 
cmajflt %u
进程及其子进程所导致的大错误(major faults)数目. 
utime %d
进程被调度进用户态的时间(以 jiffy 为单位, 1 jiffy=1/100 
秒,另外不同硬件体系略有不同). 
stime %d
进程被调度进内核态的时间, 以 jiffy 为单位. 
cutime %d
进程及其子进程被调度进用户态的时间, 以 jiffy 为单位. 
cstime %d
进程及其子进程被调度进内核态的时间, 以 jiffy 为单位. 
counter %d
如果进程不是当前正在运行的进程, 就是进程在下个时间片当前可以拥有的最大时间, 
以 jiffy 为单位. 如果进程是当前正在运行的进程, 就是当前时间片中所剩下 jiffy 
数目. 
priority %d
标准优先数只再加上 15, 在内核里该值总是正的. 
timeout %u
当前至进程的下一次间歇时间, 以 jiffy 为单位. 
itrealvalue %u
由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位. 
starttime %d 
进程自系统启动以来的开始时间, 以 jiffy 为单位. 
vsize %u
虚拟内存大小. 
rss %u
Resident Set Size(驻留大小): 进程所占用的真实内存大小, 以页为单位, 
为便于管理而减去了 3. rss 只包括正文, 数据以及堆栈的空间, 
但不包括尚未要求装入内存的或已被交换出去的. 
rlim %u
当前进程的 rss 限制, 以字节为单位, 通常为 2,147,483,647. 
startcode %u
正文部分地址下限. 
endcode %u
正文部分地址上限. 
startstack %u
堆栈开始地址. 
kstkesp %u
esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致. 
kstkeip %u
EIP(32 位指令指针)的当前值. 
signal %d
待处理信号的 bitmap(通常为 0). 
blocked %d
被阻塞信号的 bitmap(对 shell 通常是 0, 2). 
sigignore %d
被忽略信号的 bitmap. 
sigcatch %d
被俘获信号的 bitmap. 
wchan %u
进程在其中等待的通道, 实际是一个系统调用的地址. 如果你需要文本格式的, 
也可以在名字列表中找到. (如果有最新版本的 /etc/psdatabase, 你可以在 ps -l 
的结果中的 WCHAN 域看到) 
cpuinfo 
保存了CPU 以及体系架构依赖条目的列表. 对于不同的系统架构有不同的列表, 
共有的两项是 cpu 和 BogoMIPS, cpu 可能是当前在用的 CPU, 而 BogoMIPS 
则是内核初始化时计算出的一个系统常数. 
devices 
主设备号及设备组的列表, 文本格式. MAKEDEV 脚本使用该文件来维持内核的一致性.

|
man proc

|
你想了解什么,说的再明白些

    
 
 

您可能感兴趣的文章:

  • Linux下如何使用oci和proc
  • 关于 linux /proc编程的问题
  • linux下其他用户使用proc命令要怎么设置
  • 如何读取主版的bios信息并显示出来? linux下面的/proc文件系统可以帮助完成这个功能么?
  • Linux下proc编程汉字乱码的问题!
  • linux /proc 的问题。以及获取子进程虚拟内存信息。
  • linux /proc/net/wireless status含义
  • linux系统中有哪些命令要用到proc文件系统?
  • 求助linux下编译proc程序出错
  • 关于linux下的proc程序运行
  • linux启动失败 Error: /proc must be mounted
  • LINUX中的PROC程序问题 在线等
  • 在linux下用proc编译程序,'*.pc'文件编译后成了'*.c?',多了一个问号?
  • 在linux中,想查询/proc文件中的某个目录是否存在,求助如何进行检测
  • 请问在redhat-linux7.2中如何改系统参数,如SEMMNU等,这些在/proc/sys/kernel/目录中没有的。??
  • Linux平台配置Oracle ProC开发环境
  • 关于linux版本识别的问题cat /proc/version
  • 请问,Linux下的cookies默认放在哪个目录下? 我在Firefox查看是在/目录下,但没有,在proc和tmp里面也没找到,估计也不会放到这两个目录下.
  • 请教LINUX上PROC的编译问题?
  • Linux proc目录下子文件或子文件夹的作用
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • sqlserver iis7站长之家
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3