全面了解Linux下Proc文件系统.doc_第1页
全面了解Linux下Proc文件系统.doc_第2页
全面了解Linux下Proc文件系统.doc_第3页
全面了解Linux下Proc文件系统.doc_第4页
全面了解Linux下Proc文件系统.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全面了解Linux下Proc文件系统Proc是一个虚拟文件系统,在Linux系统中它被挂载于/proc目录之上。Proc有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非常有 用的功能,也是Linux变得更加特别的功能就是以文本流的形式来访问进程信息。很Linux命令(比如 ps、toPpstree等)都需要使用这个文件系统的信息。 本文就是向用户介绍一些访问这些信息的方法 。需要说明的是,本文所述的内容并不 一定适用所有内核版本,有部分操作只适用于2.6内核。bus 总线信息(只读) drivers 驱动信息(只读) fs 文件系统特别信息(只读) ide IDE接口信息(只读) irq IRQ信息(只读) net 网络子系统信息(只读) scsi SCSI系统信息(只读) sysvipc IPC子系统信息(只读) tty tty子系统信息(只读) sys 系统内核可调参数 (可调)一、进程信息 在/proc文件系统中,每一个进程都有一个相应的文件 。下面是/proc目录下的一些重要文件 : /proc/pid/cmdline 包含了用于开始进程的命令 ; /proc/pid/cwd包含了当前进程工作目录的一个链接 ; /proc/pid/environ 包含了可用进程环境变量的列表 ; /proc/pid/exe 包含了正在进程中运行的程序链接; /proc/pid/fd/ 这个目录包含了进程打开的每一个文件的链接; /proc/pid/mem 包含了进程在内存中的内容; /proc/pid/stat包含了进程的状态信息;/proc/pid/statm 包含了进程的内存使用信息。 下面是一些获取进程信息的例子: 假设现在要查看是否所有的进程都会做存储器清除工作。在/proc/pid/stat文件中的每一 个进程标识 (第8个属性)提供了有关进程的很多 “个人”信 息。这个信 息可以对每一个 进程标识进行。0x00000002 Process being created 0x00000004 Exiting0x00000008 Dead 0x00000040 Process using superuser privflage 0x00000200 P rocess dumping core 0x00000400 Prooess received some signal 0x00000800 Process allocating memory 0x00001000 Killed due to out-of-memory condition 笔者从/usr/src/linux/include/linux/sched.h 中提取了这些信息。 /proc/pid/fd/ 目录提供 了有关打开文件的信息。要查看被进程使用的输入文件,使用以下命令 :# ls l /proc/pid/fd/0 查看被进程使用socket,使用以下命令 : #ls l /proc/pid/fd|sed n /socket/s/.*/;s/p 有关这些socket的信息可以使用以下命令获取 : # netstat -ae 要将命令行参数传递给任意进程,使用以下命令 : cat /proc/pid/cmdline 要 获取某一进程父进程的ID号,使用以下命令: #grep PPid/proc/pid/status 二、普通的系统信息Proc包含了很多系统信息,这其中包括CPU负载、文件系统和网络配置 。下面是一些通过Proc查看和更改系统的例子: 获取可用系统内存的空间 : # grep Free /proc/meminfo 自从系统最后一次启动后的系统统计可以从/proc/stat文件中获取 : #grep processes /proc/stat 获知第 1、5和15分钟系统负载的平均值 : #awk print “1 min:t” $1 “n5 min:t” $2 “n15 min:t” $3 /proc/loadavg /proc/partitions可用于获取系统的分区信息 。 /proc/net和/proc/sys/net可用于查看和更改重要的网络信息。比如,禁用ping命令,可以以 root身份运行以下命令 :#echo 1/proc/sys/net/ipv4/icmp_echo_ignore_all如果要启用IP转发/IP伪装,使用以下命令 : #echo 1 /proc/sys/net/ipv4/ip_forward 已经挂载的文件系统信息可以从/proc/mounts中检索。 要改变正在使用的主机名 ,使用以下命令: # echo www.abc.corn /proc/sys/kernel/hostname 要获取CPU信息,使用以下命令 : # cat /proc/cpuinfo 要获知swap空间的使用情况 ,使用以下命令: # cat /proc/swaps 获取系统的正常运行时间: #cat /proc/uptime 列出由NFS共享的文件系统: # cat /proc/fs/nfsd/exports 三、相关内核的信息这是一个非常宽泛的主题,这里只介绍其中一小部分内容: 从正在运行的内核中获知内核的版本: #cat /proc/version /proc/kmsg文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用。 /proc/kcore文件提供了以内核文件格式形式访问系统物理内存,并且可以被gdb用于检查任意内核数据结构的当前状态。如果装了源码,那么可以通过查看/usr/src/linux/Documentation/filesystems/proc.txt文件来获取更多的信息 。从中可以看出来,Proc是一个非常不错的获取系统信息渠道。如果利用得好,则它对Linux系统的维护和管理能提供非常大的帮助四、/proc目录proc/scsi/proc/scsi/scsi作为系统管理员,需要了解的最有用内容是,在有热交换驱动器情况下,如何不重启系统就可以添加更多磁盘空间。假使不使用 /proc,您可以插入驱动器,但为了使系统识别新磁盘,必须随即重新引导系统。这里,可以用以下命令来使系统识别新的驱动器:echo scsi add-single-device w x y z /proc/scsi/scsi为使该命令正常运行,必须指定正确的参数值 w、x、y 和 z,如下所示: w 是主机适配器标识,第一个适配器为零(0)x 是主机适配器上的 SCSI 通道,第一个通道为零(0)y 是设备的 SCSI 标识z 是 LUN 号,第一个 LUN 为零(0)一旦将磁盘添加到系统中之后,可以挂装任何先前已格式化的文件系统,也可以开始对它进行格式化等。例如,如果不确定磁盘是什么设备,或者想检查任何先前已有的分区,则可以用如 fdisk -l 这样的命令来向您报告这方面的信息。相反的,在不重新引导系统的情况下将设备从系统中除去的命令是:echo scsi remove-single-device w x y z /proc/scsi/scsi在输入这条命令并将热交换 SCSI 磁盘从系统中除去之前,请确保首先卸下已从该磁盘安装的任何文件系统。/proc/sys/fs/proc/sys/fs/file-max该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。缺省设置:4096/proc/sys/fs/file-nr该文件与 file-max 相关,它有三个值: 已分配文件句柄的数目已使用文件句柄的数目文件句柄的最大数目该文件是只读的,仅用于显示信息。/proc/sys/fs/inode-*任何以名称“inode”开头的文件所执行的操作与上面那些以名称“file”开头的文件所执行的操作一样,但所执行的操作与索引节点有关,而与文件句柄无关。/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid这两个文件分别保存那些支持 16 位用户标识和组标识的任何文件系统的用户标识(UID)和组标识(GID)。可以更改这些值,但如果您确实觉得需要这样做,那么您可能会发现更改组和密码文件项更容易些。缺省设置:65534/proc/sys/fs/super-max该文件指定超级块处理程序的最大数目。挂装的任何文件系统需要使用超级块,所以如果挂装了大量文件系统,则可能会用尽超级块处理程序。缺省设置:256/proc/sys/fs/super-nr该文件显示当前已分配超级块的数目。该文件是只读的,仅用于显示信息。/proc/sys/kernel/proc/sys/kernel/acct该文件有三个可配置值,根据包含日志的文件系统上可用空间的数量(以百分比表示),这些值控制何时开始进行进程记帐: 如果可用空间低于这个百分比值,则停止进程记帐如果可用空间高于这个百分比值,则开始进程记帐检查上面两个值的频率(以秒为单位)要更改这个文件的某个值,应该回送用空格分隔开的一串数字。缺省设置:2 4 30如果包含日志的文件系统上只有少于 2% 的可用空间,则这些值会使记帐停止,如果有 4% 或更多可用空间,则再次启动记帐。每 30 秒做一次检查。/proc/sys/kernel/ctrl-alt-del该文件有一个二进制值,该值控制系统在接收到 ctrl+alt+delete 按键组合时如何反应。这两个值表示: 零(0)值表示捕获 ctrl+alt+delete,并将其送至 init 程序。这将允许系统可以完美地关闭和重启,就好象您输入 shutdown 命令一样。壹(1)值表示不捕获 ctrl+alt+delete,将执行非干净的关闭,就好象直接关闭电源一样。缺省设置:0/proc/sys/kernel/domainname该文件允许您配置网络域名。它没有缺省值,也许已经设置了域名,也许没有设置。/proc/sys/kernel/hostname该文件允许您配置网络主机名。它没有缺省值,也许已经设置了主机名,也许没有设置。/proc/sys/kernel/msgmax该文件指定了从一个进程发送到另一个进程的消息的最大长度。进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。缺省设置:8192/proc/sys/kernel/msgmnb该文件指定在一个消息队列中最大的字节数。缺省设置:16384/proc/sys/kernel/msgmni该文件指定消息队列标识的最大数目。缺省设置:16/proc/sys/kernel/panic该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位)。零(0)秒设置在发生内核严重错误时将禁止重新引导。缺省设置:0/proc/sys/kernel/printk该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请阅读 syslog(2) 联机帮助页。该文件的四个值为: 控制台日志级别:优先级高于该值的消息将被打印至控制台缺省的消息日志级别:将用该优先级来打印没有优先级的消息最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)缺省的控制台日志级别:控制台日志级别的缺省值缺省设置:6 4 1 7/proc/sys/kernel/shmall该文件是在任何给定时刻系统上可以使用的共享内存的总量(以字节为单位)。缺省设置:2097152/proc/sys/kernel/shmax该文件指定内核所允许的最大共享内存段的大小(以字节为单位)。缺省设置:33554432/proc/sys/kernel/shmmni该文件表示用于整个系统共享内存段的最大数目。缺省设置:4096/proc/sys/kernel/sysrq如果该文件指定的值为非零,则激活 System Request Key。缺省设置:0/proc/sys/kernel/threads-max该文件指定内核所能使用的线程的最大数目。缺省设置:2048/proc/sys/net/proc/sys/net/core/message_burst写新的警告消息所需的时间(以 1/10 秒为单位);在这个时间内所接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”您系统的人所使用的拒绝服务(Denial of Service)攻击。缺省设置:50(5 秒)/proc/sys/net/core/message_cost该文件存有与每个警告消息相关的成本值。该值越大,越有可能忽略警告消息。缺省设置:5/proc/sys/net/core/netdev_max_backlog该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。缺省设置:300/proc/sys/net/core/optmem_max该文件指定了每个套接字所允许的最大缓冲区的大小。/proc/sys/net/core/rmem_default该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)。/proc/sys/net/core/rmem_max该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)。/proc/sys/net/core/wmem_default该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)。/proc/sys/net/core/wmem_max该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)。/proc/sys/net/ipv4所有 IPv4 和 IPv6 的参数都被记录在内核源代码文档中。请参阅文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。/proc/sys/net/ipv6同 IPv4。/proc/sys/vm/proc/sys/vm/buffermem该文件控制用于缓冲区内存的整个系统内存的数量(以百分比表示)。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。 用于缓冲区的内存的最低百分比如果发生所剩系统内存不多,而且系统内存正在减少这种情况,系统将试图维护缓冲区内存的数量。用于缓冲区的内存的最高百分比缺省设置:2 10 60/proc/sys/vm/freepages该文件控制系统如何应对各种级别的可用内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。 如果系统中可用页面的数目达到了最低限制,则只允许内核分配一些内存。如果系统中可用页面的数目低于这一限制,则内核将以较积极的方式启动交换,以释放内存,从而维持系统性能。内核将试图保持这个数量的系统内存可用。低于这个值将启动内核交换。缺省设置:512 768 1024/proc/sys/vm/kswapd该文件控制允许内核如何交换内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值: 内核试图一次释放的最大页面数目。如果想增加内存交换过程中的带宽,则需要增加该值。内核在每次交换中试图释放页面的最少次数。内核在一次交换中所写页面的数目。这对系统性能影响最大。这个值越大,交换的数据越多,花在磁盘寻道上的时间越少。然而,这个值太大会因“淹没”请求队列而反过来影响系统性能。缺省设置:512 32 8/proc/sys/vm/pagecache该文件与 /proc/sys/vm/buffermem 的工作内容一样,但它是针对文件的内存映射和一般高速缓存。使内核设置具有持久性这 里提供了一个方便的实用程序,用于更改 /proc/sys 目录下的任何内核参数。它使您可以更改运行中的内核(类似于上面用到的 echo 和重定向方法),但它还有一个在系统引导时执行的配置文件。这使您可以更改运行中的内核,并将这些更改添加到配置文件,以便于在系统重新引导之后,这些更改仍然生效。该实用程序称为 sysctl,在 sysctl(8) 的联机帮助页中,对这个实用程序进行了完整的文档说明。sysctl 的配置文件是 /etc/sysctl.conf,可以编辑该文件,并在 sysctl.conf(8) 下记录了该文件。sysctl 将 /proc/sys 下的文件视为可以更改的单个变量。所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 为例,它表示系统中所允许的文件句柄的最大数目,这个文件被表示成 fs.file-max。这个示例揭示了 sysctl 表示法中的一些奇妙事情。由于 sysctl 只能更改 /proc/sys 目录下的变量,并且人们始终认为变量是在这个目录下,因此省略了变量名的那一部分(/proc/sys)。另一个要说明的更改是,将目录分隔符(正斜杠 /)换成了英文中的句号(点 .)。将 /proc/sys 中的文件转换成 sysctl 中的变量有两个简单的规则: 去掉前面部分 /proc/sys。将文件名中的正斜杠变为点。这两条规则使您能将 /proc/sys 中的任一文件名转换成 sysctl 中的任一变量名。一般文件到变量的转换为:/proc/sys/dir/file - dir.filedir1.dir2.file - /proc/sys/dir1/dir2/file可以使用命令 sysctl -a 查看所有可以更改的变量和其当前设置。用 sysctl 还可以更改变量,它所做的工作与上面所用的 echo 方法完全一样。其表示法为:sysctl -w dir.file=value还是用 file-max 作为示例,使用下面两种方法中的一种将该值更改为 16384:sysctl -w fs.file-max=16384或者:echo 16384 /proc/sys/fs/file-max不要忘记 sysctl 不会将所做的更改添加到配置文件中;这要您用手工来完成。如果您希望在重新引导之后,前面所做的更改仍然有效,则必须维护这个配置文件。注:不是所有的分发版都提供 sysctl 支持。如果您的特定系统属于这种情况,则可以用上面所描述的 echo 和重定向方法,将这些命令添加到启动脚本中,这样系统每次引导时,都会执行它们。用于设置系统的命令在 系统运行的同时更改其它非内核系统参数,而且在不重新引导系统的情况下使这些设置生效,这种做法是可能的。在 /etc/init.d 目录中列出了包含这些参数的文件,它们主要按服务、守护程序和服务器来分类。由于越来越多各方面的脚本可以罗列在这个目录下,所以这里不可能讨论所有各种配置。不过,下面列举了一些示例,这些示例讨论了如何在不同的 Linux 分发版上操作 /etc/init.d 下的脚本。这里

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论