/proc(虚拟文件系统)
这个目录下的文件不是物理存在的,是软件虚拟出来的,与普通文件不同,该文件是动态的。通过/proc可以实现用户态与内核态之间的通信。在内核模式下,可以很方便的创建/proc子目录,并进行读写操作,只不过此时你需要实现文件读写接口,因为内核不知道如何处理该文件。
/proc非常特别,因为它也是一个虚拟文件系统。有时称为过程信息伪文件系统。它不包含“真实”文件,而是包含运行时系统信息(例如,系统内存,已安装的设备,硬件配置等)。因此,它可以被视为内核的控制和信息中心。实际上,很多系统实用程序只是对该目录中文件的调用。例如,lsmod与cat /proc/modules相同,而lspci是cat /proc/pci的同义词。通过更改此目录中的文件,您甚至可以在系统运行时读取/更改内核参数(sysctl)
/proc/kcore
kcore这个文件指的的可被内核分配的空间,在64b的OS中,这个文件大小最大可以达到128T,因为64b的OS最大寻址内存范围局势128T(2^47)
这个文件是系统的物理内存以core文件格式保存的文件。例如,GDB能用它考察内核的数据结构。它不是纯文本,而是/proc目录下为数不多的几个二进制格式的项之一/proc/cpuinfo
这个文件提供了有关系统CPU的多种信息。这些信息是从内核里对CPU的测试代码中得到的
/proc/cmdline
这个文件给出了内核启动的命令行。它和用于进程的cmdline项非常相似
/proc/devices
这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称
/proc/dma
这个文件列出由驱动程序保留的DMA通道和保留它们的驱动程序名称。casade项供用于把次DMA控制器从主控制器分出的DMA行所使用;这一行不能用于其它用途
1
[root@iZ2zedgghv14j4osqabymmZ ~]# cat /proc/dma
2
2: floppy
3
4: cascade
/proc/filesystems
这个文件列出可供使用的文件系统类型,一种类型一行。虽然它们通常是编入内核的文件系统类型,但该文件还可以包含可加载的内核模块加入的其它文件系统类型。
/proc/interrupts
这个文件的每一行都有一个保留的中断。每行中的域有:中断号,本行中断的发生次数,可能带有一个加号的域(SA_INTERRUPT标志设置),以及登记 这个中断的驱动程序的名字。可以在安装新硬件前,像查看/proc/dma和/proc/ioports一样用cat命令手工查看手头的这个文件。这几个 文件列出了当前投入使用的资源(但是不包括那些没有加载驱动程序的硬件所使用的资源)
/proc/ioports
这个文件列出了诸如磁盘驱动器,以太网卡和声卡设备等多种设备驱动程序登记的许多I/O端口范围
/proc/kmsg
这个文件用于检索用printk生成的内核消息。任何时刻只能有一个具有超级用户权限的进程可以读取这个文件。也可以用系统调用syslog检索这些消息。通常使用工具dmesg或守护进程klogd检索这些消息
/proc/ksyms
这个文件列出了已经登记的内核符号;这些符号给出了变量或函数的地址。每行给出一个符号的地址,符号名称以及登记这个符号的模块。程序ksyms,insmod和kmod使用这个文件。它还列出了正在运行的任务数,总任务数和最后分配的PID
/proc/loadavg
这个文件给出以几个不同的时间间隔计算的系统平均负载,这就如同uptime命令显示的结果那样。前三个数字是平均负载。这是通过计算过去1分钟,5分钟,15分钟里运行队列中的平均任务数得到的。随后是正在运行的任务数和总任务数。最后是上次使用的进程号
1
[root@0378f0b411ad rpc-server]# cat /proc/loadavg
2
1.16 1.12 1.14 3/1834 329
/proc/meminfo
这个文件给出了内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内核使用的共享内存和缓冲区总量。这些信息的格式和free命令显示的结果类似
/proc/modules
这个文件给出可加载内核模块的信息。lsmod程序用这些信息显示有关模块的名称,大小,使用数目方面的信息
/proc/mounts
这个文件以/etc/mtab文件的格式给出当前系统所安装的文件系统信息。这个文件也能反映出任何手工安装从而在/etc/mtab文件中没有包含的文件系统。
/proc/stat
这个文件包含的信息有CPU利用率,磁盘,内存页,内存对换,全部中断,接触开关以及赏赐自举时间(自1970年1月1日起的秒数)
/proc/uptime
这个文件给出自从上次系统自举以来的秒数,以及其中有多少秒处于空闲。这主要供uptime程序使用。比较这两个数字能够告诉你长期来看CPU周期浪费的比例。
/proc/version
这个文件只有一行内容,说明正在运行的内核版本。可以用标准的编程方法进行分析获得所需的系统信息
/proc/net子目录
此目录下的文件描述或修改了联网代码的行为。可以通过使用arp,netstat,route和ipfwadm命令设置或查询这些特殊文件中的许多文件
1
[root@0378f0b411ad proc]# ls /proc/net
2
anycast6 dev_snmp6 if_inet6 ip6_mr_cache ip_tables_matches mcfilter netstat protocols raw6 rt_cache sockstat6 tcp6 udplite6
3
arp fib_trie igmp ip6_mr_vif ip_tables_names mcfilter6 nf_conntrack psched route snmp softnet_stat udp unix
4
dev fib_triestat igmp6 ip_mr_cache ip_tables_targets netfilter nf_conntrack_expect ptype rt6_stats snmp6 stat udp6 wireless
5
dev_mcast icmp ip6_flowlabel ip_mr_vif ipv6_route netlink packet raw rt_acct sockstat tcp udplite xfrm_stat
/proc/sys子目录
此目录中的许多项都可以用来调整系统的性能