`
mylxiaoyi
  • 浏览: 327672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Exploring /proc

阅读更多
Exploring /proc
By Trevor Warren <trevorwarren@yahoo.com>
 Posted: ( 2000-12-12 10:03:00 EST by  )
 The Proc psuedo file system is a real time, memory resident file system
 that tracks the processes running on your machine and the state of your
 system. Read on to learn how to get the most out of the /proc file system.
 
The most striking factor about the /proc file system is the fact that the
file system doesn't exist on any particular media. The /proc File System
is a pseudo file system residing in the virtual memory and
maintains highly dynamic data on the state of your operating system. Most
of the information in the /proc file system is updated to match the
current state of the operating system. The contents of the /proc file
system can be read by anyone who has the requisite permissions. However,
certain parts of the /proc file system can be read only by the owner of
the process and of course root. The contents of the /proc filesystem are
used by many utilities which grab the data from the particular /proc
directory and display it.
Under Linux, we have utilities like lscpi, scanpci and pnpdump which help
us detect the various PCI, ISA hardware chipsets and help us make the best
choices as far as the io, dma and irq values are concerned. Similarly by
looking at the values of the various parameters in the /proc file system,
one can determine a lot about the current state of the kernel and the
processes under way. For example, we have the dmesg command.
bash# dmesg
Dmesg helps us determine the devices that have been detected and
initialized by the Linux kernel. We have utilities like "ps" and "top"
which give an accurate snapshot about the status of the processes running
on the machine and a list of awake and sleeping processes currently
running on the machine. Have you ever wondered where exactly the
information dished out to you by the "ps" and the "top" process comes
from? The information for these processes come from the /proc file system
which is updated on the fly as changes take place in the processes.
Lets take a look at a snapshot of the directory listing of the root (/)
directory of a Linux machine.
drwxr-xr-x 14 root root 291 Oct 25 18:47 opt
dr-xr-xr-x 86 root root 0 Nov 30 2000 proc <--
drwx--x--x 16 root root 841 Nov 20 00:10 root
drwxr-xr-x 5 root root 4627 Oct 15 11:42 sbin
Since the /proc file system is a virtual file system and resides in
memory, a new /proc file system is created every time your Linux machine
reboots. Take a look at the snapshot of the root directory shown above.
The size of the proc directory is 0 and the last time of modification is
the current date.
Using the /proc/sys file system to parse kernel parameters.
Another very important part of the /proc file system is the /proc/sys
directory. Making changes in this directory enables you to make real time
changes to certain kernel parameters. One fine example that can illustrate
this is as follows.
 /proc/sys/net/ipv4/ip_forward
 
The above file ip_forward has a default value of "0" which you can see
when you cat the contents of this file. This means that IP forwarding by
this machine isn't allowed by the kernel. But this configuration can be
changed in real time by just changing the value stored in this file from
"0" to "1". Thus we have enabled IP forwarding on our Linux machine.
 
Contents of the /proc File System
The output of the directory listing of the /proc directory is as follows.
The actual listing was really lengthy. What's given below is a much
shorter version.
 
1 114 1210 1211 1212 1227 133 137 148 160 161 163 167 168 169
170 171 172 173 174 186 190 193 194 195 203 206 207 208 209
210 211 220 221 222 223 224 225 226 227 229 230 234 246 253 279
296 3 4 5 500 501 6 667 668 669 683 684 685 7 711 712 713 737 763
764 765 766 773 774 775 782 79 88 92 asound bus cmdline config.gz
cpuinfo devices dma fb filesystems fs ide interrupts ioports
kcore kcore_elf kmsg ksyms loadavg locks lvm mdstat meminfo
memstat misc modules mounts net partitions pci rtc scsi self
slabinfo stat swaps sys tty uptime version
Every number and word that you see in the above snapshot are the contents of
the /proc directory. Lets learn a little more about the contents of the
directories with the numerical naming scheme.
The numerical named directories
 1 114 1210 1211 1212 1227 133 137 148 160 161 163 167 168 169
170 171 172 173 174 186 190 193 194 195 203 206 207 208 209
210 211 220 221 222 223 224 225 226 227 229 230 234 246 253 279
296 3 4 5 500 501 6 667 668 669 683 684 685 7 711 712 713 737 763
764 765 766 773 774 775 782 79 88 92
The various directories that you see out here are the processes that were
running on our machine at the instant we took a snapshot of the /proc
file system. Let's look at the contents of one of these directories.
freeos:~ # cd /proc
freeos:/proc # ls -la 114
total 0
dr-xr-xr-x 3 named named 0 Nov 30 12:20 .
dr-xr-xr-x 89 root root 0 Nov 30 2000 ..
-r--r--r-- 1 root root 0 Nov 30 12:20 cmdline
lrwx------ 1 root root 0 Nov 30 12:20 cwd -> /var/named
-r-------- 1 root root 0 Nov 30 12:20 environ
lrwx------ 1 root root 0 Nov 30 12:20 exe -> /usr/sbin/named
dr-x------ 2 root root 0 Nov 30 12:20 fd
pr--r--r-- 1 root root 0 Nov 30 12:20 maps
-rw------- 1 root root 0 Nov 30 12:20 mem
lrwx------ 1 root root 0 Nov 30 12:20 root -> /
-r--r--r-- 1 root root 0 Nov 30 12:20 stat
-r--r--r-- 1 root root 0 Nov 30 12:20 statm
-r--r--r-- 1 root root 0 Nov 30 12:20 status
Before executing this command you need to log in as root because the
various processes running on the system may be owned by various other
users. As usual you have access only to the processes that you have
started. After having logged in as root just execute the above command for
any of the directories and compare the output to what is listed above.
Did you notice any similarity in the output you got and the one listed
above? Yes, the contents of all the directories are the same irrespective
of the directory you choose to view as these directories contain the
various parameters and the status of the process whose PID is the name of
the current directory that you are in. The values of the various
parameters and status information would of course vary from process to
process.
Look at the first line of the output as viewed above.
 -r--r--r-- 1 root root 0 Nov30 12:20 cmdline
"cmdline", this file contains the whole command line used to invoke the
process. The contents of this file are the command line arguments with all
the parameters that one has passed to start the particular process. All
the information contained in the file is without any formatting and any
space between the command line arguments and various arguments.
 lrwx------ 1 root root 0 Nov 30 12:20 cwd -> /var/named
"cwd", as is visible from above this is a symbolic link to the current
working directory of that particular process.
 -r-------- 1 root root 0 Nov 30 12:20 environ
"environ" contains all the environment variables defined for this
particular process in the form VARIABLE=value. As with cmdline, all the
information contained in the file is without any formatting or space
between the command line arguments and various arguments.
 lrwx------ 1 root root 0 Nov 30 12:20 exe -> /usr/sbin/named
"exe", this is a symbolic link to the executable file that the current
process is linked to.
 dr-x------ 2 root root 0 Nov 30 12:20 fd
"fd", this directory contains the list file descriptors as opened by the
particular process.
 pr--r--r-- 1 root root 0 Nov 30 12:20 maps
"maps", when you print the contents of this named pipe, you can see the
parts of the process' address space which are currently mapped to a file.
The fields, from left to right, are: the address space associated to this
mapping, the permissions associated to this mapping, the offset from the
beginning of the file where the mapping starts, the device on which the
mapped file is located, the inode number of the file and finally, the name
of the file itself.
 lrwx------ 1 root root 0 Nov 30 12:20 root -> /
"root", this is a symbolic link pointing to the directory which is the
root file system for the particular process.
 -r--r--r-- 1 root root 0 Nov 30 12:20 status
"status", this file gives information regarding the name of the process,
its current status, i.e sleeping or awake, its PID, its UID, its PPID and
a lot of other general information. This information can be viewed in a
simpler and structured manner by using tools like, "ps" and "top".
Generic information about the various /proc/* directories
This information has been sourced from the LASG, Chapter 3
The /proc filesystem
/proc/cpuinfo
Information about the processor, such as its type, make, model, and
performance.
/proc/devices
List of device drivers configured into the currently running kernel.
/proc/dma
Shows which DMA channels are being used at the moment.
/proc/filesystems
Filesystems configured into the kernel.
/proc/interrupts
Shows which interrupts are in use, and how many of each there have been.
/proc/ioports
Which I/O ports are in use at the moment.
Hope this article has been informative guide to the /proc File system.
分享到:
评论

相关推荐

    Essential Statistics Exploring the World through Data, 2nd Global Edition

    This book is ideal for a one-semester course in statistics, offering a streamlined presentation of Introductory Statistics: Exploring the World through Data, by Gould/Ryan. Exploring the World through...

    Exploring Chemistry With Electronic Structure Methods 第二版

    Exploring Chemistry With Electronic Structure Methods 第二版

    exploring chemistry with electronic structure methods

    Exploring Chemistry with Electronic Structure Methos, Second Edition, 作者James B. Foresman, Eleen Frisch 出版社Gaussian, Inc, USA, 1996 前言 Gaussian可以做很多事情,具体包括 分子能量和结构研究 过渡态...

    Exploring C++ 无水印pdf

    Exploring C++ 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Exploring ArcObjects 1

    Exploring ArcObjects

    Exploring ES6

    Exploring ES6

    Exploring complex networks

    Exploring complex networks

    Exploring Blazor.rar

    在“Exploring Blazor”这本书或资料中,你可能会学到以下关键知识点: 1. **Blazor架构**:Blazor的核心是基于组件的模型,其中UI是通过可重用的、自包含的代码片段(称为组件)构建的。这些组件可以嵌套并相互...

    Exploring_Expect.pdf

    ### Exploring Expect: A Comprehensive Guide to Understanding and Utilizing the Automation Tool #### 引言 《Exploring_Expect.pdf》是一本由李克阳撰写的专著,深入探讨了名为Expect的自动化工具。这本书...

    Exploring ArcObjects

    《Exploring ArcObjects》是一本由Michael Zeiler编辑、ESRI公司出版的专业书籍,主要面向地理信息系统(GIS)开发者和技术人员。本书全面介绍了ArcObjects这一强大工具集的功能与应用,是ESRI公司GIS领域的经典之作...

    Exploring_Expect 书签版

    《Exploring Expect》是一本专为自动化测试和脚本编写爱好者量身打造的书籍,尤其在使用expect工具和TCL语言方面提供了深入的指导。这本书的加书签版更是为读者提供了一份完整的、方便查阅的资源,使得学习过程更加...

    Bidirectional Rapidly-exploring Random Trees_random_RRT_rrtmatla

    在机器人路径规划领域,Bidirectional Rapidly-exploring Random Trees (Bi-RRT) 是一种高效且广泛应用的算法,尤其在解决复杂环境中的路径搜索问题时。Bi-RRT 算法是对传统 RRT(Rapidly-exploring Random Trees)...

    Exploring Java.pdf

    ### Java语言探索:基础知识与应用开发 #### 一、Java语言的历史与原则 - **历史背景**:Java是...此外,《Exploring Java》这本书还提供了丰富的示例代码和实践指导,非常适合初学者和有一定经验的程序员参考学习。

    Exploring Curvature

    《Exploring Curvature》是一本专门探讨曲线和曲面几何学的书籍,作者是加州大学伯克利分校机械工程系的教授James Casey。本书的特点是通过物理的方式深入讲解曲率,详细阐述了数学概念与物理世界之间的紧密联系,并...

    Exploring Swift Playgrounds

    Exploring Swift Playgrounds: The Fastest and Most Effective Way to Learn to Code and to Teach Others to Use Your Code by Jesse Feiler English | 26 May 2017 | ISBN: 1484226461 | 192 Pages | PDF | 7.27 ...

    Exploring C++

    根据给出的文件信息,这是一本名为《Exploring C++》的书籍,主要介绍C++的进阶知识。书籍的作者是Ray Lischner,并且这是一本由Apress出版社出版的程序员指南。在这本书中,读者可以期待了解到C++编程语言的核心...

    Exploring ES6(中文版)

    Exploring JS: JavaScript books for programmers Most of the following books are free to read online. I hope you’ll like them so much that you’ll buy the offline versions. — Dr. Axel Rauschmayer ...

    Exploring ES2016 and ES2017

    Exploring ES2016 and ES2017

    Exploring ArcObjects 2

    Exploring ArcObjects 9.0 part 2

Global site tag (gtag.js) - Google Analytics