第13章 基于proc的Linux进程控制块信息读取
- 格式:ppt
- 大小:2.33 MB
- 文档页数:24


操作系统课程设计报告题目:PROC文件系统班级:计08-2学号:0804010226姓名:骆正新指导教师:李成严2011-1-6PROC文件系统1./proc文件系统简介 (3)2./proc文件系统组成 (3)2.1进程内存映像文件 (3)2.2系统配置信息 (4)2.3系统运行状态信息 (5)2.4系统内核可调参数 (7)3./proc文件系统重要子目录 (8)3.1表1:/proc根下文件和目录 (8)3.2表2:/proc/sys下文件和目录 (10)4.语言编程实现内核参数查看与修改 (11)PROC文件系统1./proc文件系统简介procfs,是process fs缩写。
/proc文件系统是一个虚拟文件系统,只存在于内存中,不占用任何磁盘空间。
/proc是系统运行状况的动态反映,可以用做用户与内核交互的接口。
用户可以先从/proc中读取很多从内核释放出的信息;同时内核在必要的时候从用户得到输入,进而改变内核的变量或者运行状态。
2./ proc文件系统组成2.1进程内存映像文件/proc目录下所有以数字形式的目录均为进程的内存映像。
对于当前正在运行的每一个进程,准存在一个对应目录,目录的名字以相应进程的ID命名。
其中,目录1对应于著名的init进程,示例如下:$ ls -l /proc总计0dr-xr-xr-x 7 root root 0 2011-01-05 17:10 1dr-xr-xr-x 7 root root 0 2011-01-05 17:10 10dr-xr-xr-x 7 root root 0 2011-01-05 09:10 1005dr-xr-xr-x 7 root root 0 2011-01-05 09:10 1026dr-xr-xr-x 7 root root 0 2011-01-05 09:10 1088dr-xr-xr-x 7 root root 0 2011-01-05 17:10 11dr-xr-xr-x 7 root root 0 2011-01-05 09:10 1119dr-xr-xr-x 7 root root 0 2011-01-05 09:10 1120dr-xr-xr-x 7 root root 0 2011-01-05 09:10 1122…程ID命名的目录中,均存在一系列虚拟文件或目录。
Linux下proc⽬录的作⽤⽂章是摘抄过来,⽅便⾃⼰查阅!1. /proc⽬录Linux 内核提供了⼀种通过 /proc ⽂件系统,在运⾏时访问内核内部数据结构、改变内核设置的机制。
proc⽂件系统是⼀个伪⽂件系统,它只存在内存当中,⽽不占⽤外存空间。
它以⽂件系统的⽅式为访问系统内核数据的操作提供接⼝。
⽤户和应⽤程序可以通过proc得到系统的信息,并可以改变内核的某些参数。
由于系统的信息,如进程,是动态改变的,所以⽤户或应⽤程序读取proc⽂件时,proc⽂件系统是动态从系统内核读出所需信息并提交的。
下⾯列出的这些⽂件或⼦⽂件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。
另外,在/proc下还有三个很重要的⽬录:net,scsi和sys。
Sys⽬录是可写的,可以通过它来访问或修改内核的参数,⽽net和scsi则依赖于内核配置。
例如,如果系统不⽀持scsi,则scsi⽬录不存在。
除了以上介绍的这些,还有的是⼀些以数字命名的⽬录,他们是进程⽬录。
系统中当前运⾏的每⼀个进程都有对应的⼀个⽬录在/proc下,以进程的PID号为⽬录名,他们是读取进程信息的接⼝。
⽽self⽬录则是读取进程本⾝的信息接⼝,是⼀个link。
2.⼦⽂件或⼦⽂件夹/proc/buddyinfo 每个内存区中的每个order有多块可⽤,和内存碎⽚问题有关/proc/cmdline 启动时传递给kernel的参数信息/proc/cpuinfo cpu的信息/proc/crypto 内核使⽤的所有已安装的加密密码及细节/proc/devices 已经加载的设备并分类/proc/dma 已注册使⽤的ISA DMA 频道列表/proc/execdomains Linux 内核当前⽀持的execution domains/proc/fb 帧缓冲设备列表,包括数量和控制它的驱动/proc/filesystems 内核当前⽀持的⽂件系统类型/proc/interrupts x86 架构中的每个IRQ中断数/proc/iomem 每个物理设备当前在系统内存中的映射/proc/ioports ⼀个设备的输⼊输出所使⽤的注册端⼝范围/proc/kcore代表系统的物理内存,存储为核⼼⽂件格式,⾥边显⽰的是字节数,等于RAM⼤⼩加上4kb/proc/mdstat 多硬盘,RAID配置信息(md=multiple disks)/proc/loadavg 根据过去⼀段时间内CPU和IO的抓⿁呢太得出的负载状态,与uptime命令有关/proc/meminfo RAM使⽤的相关信息/proc/misc 其他的主要设备(设备号为10)上注册的驱动/proc/modules 所有加载到内核的模块列表/proc/mounts 系统中使⽤的所有挂载/proc/partitions 分区中的块分配信息/proc/stat 所有的cpu活动信息/proc/uptime 系统已经运⾏了多久/proc/swaps 交换空间的使⽤情况/proc/fs ⽂件系统信息/proc/ide ide设备信息/proc/net ⽹卡设备信息/proc/vmsat 虚拟内存统计信息/proc/vmcore 内核panic时的内存映像/proc/diskstats 取得磁盘信息/proc/scsi scsi设备信息以下是/proc⽬录中进程信息/proc/N pid为N的进程信息/proc/N/cmdline 进程启动命令/proc/N/cwd 链接到进程当前⼯作⽬录/proc/N/exe 链接到进程的执⾏命令⽂件/proc/N/fd 包含进程相关的所有的⽂件描述符/proc/N/maps 与进程相关的内存映射信息/proc/N/mem 指代进程持有的内存,不可读/proc/N/stat 进程的状态/proc/N/status 进程状态信息,⽐stat/statm更具可读性/proc/self 链接到当前正在运⾏的进程举例:[root@a ~]# ls /proc/1 1699 292 388 45 615 9 filesystems meminfo swaps10 17 293 401 47 638 98 fs misc sys1008 1713 294 402 487 66 acpi interrupts modules sysrq-trigger 1009 1716 295 403 5 663 buddyinfo iomem mounts sysvipc1089 1717 296 404 507 664 bus ioports mpt timer_list1093 18 297 405 513 666 cgroups irq mtrr timer_stats11 19 298 406 547 667 cmdline kallsyms net tty1122 2 3 407 561 675 consoles kcore pagetypeinfo uptime1126 20 30 408 607 676 cpuinfo keys partitions version1144 21 300 409 608 677 crypto key-users sched_debug vmallocinfo 1145 22 31 41 609 688 devices kmsg schedstat vmstat12 23 32 410 610 692 diskstats kpagecount scsi zoneinfo13 24 33 411 611 696 dma kpageflags self15 282 375 42 612 7 driver loadavg slabinfo1650 283 376 43 613 713 execdomains locks softirqs1681 290 387 44 614 8 fb mdstat stat/proc/sys 系统信息和内核参数[root@a ~]# ls /proc/sysabi crypto debug dev fs kernel net user vm/proc/net ⽹啊看设备信息[root@a ~]# ls /proc/net/anycast6 ip6_flowlabel mcfilter raw6 tcp6arp ip6_mr_cache mcfilter6 route udpconnector ip6_mr_vif netfilter rt6_stats udp6dev ip6_tables_matches netlink rt_acct udplitedev_mcast ip6_tables_names netstat rt_cache udplite6dev_snmp6 ip6_tables_targets nf_conntrack snmp unixfib_trie ip_mr_cache nf_conntrack_expect snmp6 wirelessfib_triestat ip_mr_vif packet sockstat xfrm_staticmp ip_tables_matches protocols sockstat6if_inet6 ip_tables_names psched softnet_statigmp ip_tables_targets ptype statigmp6 ipv6_route raw tcp/proc/scsi scsi设备信息[root@a ~]# ls /proc/scsi/device_info mptspi scsi sg/proc/modules 所有加载到内核的模块列表[root@a ~]# cat /proc/modulesip6t_rpfilter 12595 1 - Live 0xffffffffc0515000ipt_REJECT 12541 2 - Live 0xffffffffc0510000nf_reject_ipv4 13373 1 ipt_REJECT, Live 0xffffffffc050b000 ip6t_REJECT 12625 2 - Live 0xffffffffc0506000nf_reject_ipv6 13717 1 ip6t_REJECT, Live 0xffffffffc0501000 xt_conntrack 12760 11 - Live 0xffffffffc04f2000ip_set 36439 0 - Live 0xffffffffc04f7000nfnetlink 14696 1 ip_set, Live 0xffffffffc04e7000/proc/devices 已经加载的设备并分类[root@a ~]# cat /proc//devicesCharacter devices:1 mem4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input21 sg29 fb99 ppdev128 ptm136 pts162 raw180 usb188 ttyUSB189 usb_device/proc/partitions 分区中的块分配信息[root@a ~]# cat /proc/partitionsmajor minor #blocks name8 0 41943040 sda8 1 1048576 sda18 2 40893440 sda211 0 4415488 sr0253 0 38789120 dm-0253 1 2097152 dm-1/proc/version linux内核版本和gcc版本[root@a ~]# cat /proc/versionLinux version 3.10.0-693.el7.x86_64 (builder@) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017/proc/sys/fs/file-max 该⽂件指定了可以分配的⽂件句柄的最⼤数⽬。