proc文件系统5大功能

转载 2007年09月28日 01:40:00
原贴:http://blog.chinaunix.net/u/17030/showart_320926.html


proc文件系统5大功能
在Linux里,你可以使用proc虚拟文件系统来访问各种文件信息,包括当前正在运行的进程和电池状态。Proc文件系统是虚拟的,因为它由内存 创建,并于系统更改的时候动态地更新。要获取系统信息的访问权,你应该使用标准文件API,例如fopen,fread,在proc文件系统里读取适当的 文件。
开始认真考虑

Click here to find out more! <a href="http://ad.cn.doubleclick.net/click%3Bh=v8/3571/3/0/%2a/p%3B101116803%3B0-0%3B0%3B6694709%3B31-1/1%3B20926164/20944057/1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" target="_blank"><IMG SRC="http://M1.cn.2mdn.net/123456/banner.gif" WIDTH=468 HEIGHT=60 BORDER=0 ></a>

Proc文件系统的一大特点是测试不需要任何的代码。举个例子来说,要获得系统的CPU信息,你只需要这样做:

cat /proc/cpuinfo

得到的输出是这样的:

processor     : 0
vendor_id      : GenuineIntel
cpu family      : 6
model             : 5
model name  : Pentium II (Deschutes)
stepping        : 2
cpu MHz       : 300.010
cache size    : 512 KB
fdiv_bug      : no
hlt_bug       : no
f00f_bug      : no
coma_bug      : no
fpu           : yes
fpu_exception : yes
cpuid level   : 2
wp            : yes
flags         : fpuvme de psetscmsrpaemce cx8 sep mtrrpgemcacmov pat pse36 mmxfxsr
bogomips      : 598.01

输出结果是易读的,而且很容易在代码中分析。不幸地,不是每种proc文件的格式都一样,因为数据的指令不同,不过它们都是大同小异的。

如果你仔细观察输出,就会发现分析这些字段异常简单。不过,写一个普通proc文件并不是一件容易的事,因为某些字段隔离器可能是另一个proc文件数据的一部分。因此,你需要为每个你需要访问的proc文件专门写一段代码。

虽然输出中的标记行看起来是被空格分隔的,但是实际上它们是被nul字符分隔的。我使用cat命令来显示CPU的信息,cat自动处理内含的nul。不幸地,所有的C库字符串命令不能正确处理,你需要使用memchr这样的命令来处理这些字符串。

下面是你能利用proc文件系统实现的5点非常酷的功能:

1.       进程信息:对 于系统中的任何一个进程来说,在proc的子目录里都有一个同名的进程ID。在这个目录下,你将可以找到以下的条目:cmdline, cwd, environ, exe, fd, maps, mem, root, stat, statm, 以及status。某些信息仅对超级用户账号可见,例如进程根目录。你同样需要超级用户的全县来获取当前的工作目录。到每一个单独的含有现有进程信息的进 程有一些可用的专门链接。对于系统里的任何一个进程来说,都有一个单独的自链接指向进程信息。这个的用处之一就是从进程中获取命令行信息。要实现这一目 的,使用cmdline文件更加可靠。

2.       高级电源管理(APM)信息:如果你需要了解电池状态,你也可以从/proc/apm中获得。它包含了一个确定系统在使用AC还是电池、电池的充电程度以及电池的剩余时间的标记。不过,剩余时间的标记看起来不那么准确。

3.       CPU信息:利用cpuinfo文件,你可以获得CPU当前的准确信息。

4.       负载信息:loadavg文件包含了负载信息。负载是系统被使用的程度。它由3个从0到1变化的数字来行量。其中一个是最高利用率,一个是平均利用率,一个是最低利用率。平均值是最有用的。

5.       系统内存信息:meminfo文件包含了系统内存的详细信息。它显示了物理内存的数量,可用交换空间的数量,空闲内存的数量等等。

你需要注意的一点是,所有cat命令显示的空格分割符都是nul分隔符。那么,举个例子,apm文件包含一条单独的空行,它一定是由nul字符组成的。

从proc文件系统中,你能得到许多系统或进程的信息。正因为如此,你必须为相应的信息配置恰当的权限例如,根和cwd目录应该仅有超级用户能够访问。

 原文地址 http://blog.csdn.net/hldc/archive/2005/04/21/357437.aspx
 

【操作系统】-5大功能

操作系统的五大功能: (1)作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等;   (2)文件管理:又称为信息管理;   (3)存储管理:实质是对存储“空间”的管理,主要指...
  • zhailihua
  • zhailihua
  • 2017年06月28日 10:42
  • 223

五大类型的操作系统和操作系统的五大功能

操作系统的五大管理功能:   (1)作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等;   (2)文件管理:又称为信息管理;   (3)存储管理:实质是对存储“空间”的管理,主要...
  • yujingbo1023
  • yujingbo1023
  • 2014年12月20日 11:07
  • 2422

哈工大操作系统试验 7 proc文件系统的实现

特别鸣谢成武同学提供的代码~ //============================================================================== ...
  • wangyi_lin
  • wangyi_lin
  • 2011年12月06日 16:08
  • 4099

Linux内核通信之---proc文件系统(详解)

使用 /proc 文件系统来访问 Linux 内核的内容,这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口: /proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Li...
  • sty23122555
  • sty23122555
  • 2016年06月20日 20:40
  • 4496

linux Proc文件系统介绍及运用总结

引言 先说一个刚刚发现的问题: 前两天打开测试机发现速度非常慢,top一看,发现java占用CPU 99% 查看对应pid,发现这个是新的话单采集程序gather: ...
  • goldlevi
  • goldlevi
  • 2012年06月30日 16:31
  • 7577

【Linux】深入解析Linux proc文件系统

在Linux上,proc是一个伪文件系统,提供了访问内核数据的方法,一般挂载在“/proc”目录,其中的大部分内容是只读的,挂载(mount)信息可能为:proc on /proc type proc...
  • iEearth
  • iEearth
  • 2017年06月03日 08:05
  • 1963

内核中针对proc文件系统的编程函数总结

一、头文件: #include  二、创建与删除proc文件: 创建普通文件: 1.创建不可读写的普通文件 /*此函数只负责在proc中创建一个只读文件,即能在proc中看到这个文件。 ...
  • u013920085
  • u013920085
  • 2016年01月12日 17:53
  • 914

proc文件系统功能总览

proc作为一个功能强大的文件系统,能给Linux操作带来很大的方便,希望会对大家有所帮助。        在Linux里,你可以使用proc虚拟文件系统来访问各种文件信息,包括当前正在运行的进程和...
  • chinseeker
  • chinseeker
  • 2012年07月11日 18:57
  • 185

Linux内核PROC文件系统的初始化和主要函数分析

简要介绍了linux2.4.0内核proc文件系统的初始化和部分函数代码。
  • aweii
  • aweii
  • 2017年04月01日 22:57
  • 406

深入理解linux系统下proc文件系统内容

Linux系统上的/proc目录是一种文件系统,即proc文件系统。 Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统...
  • u012948710
  • u012948710
  • 2014年02月09日 19:05
  • 1070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:proc文件系统5大功能
举报原因:
原因补充:

(最多只允许输入30个字)