linux提供了一种特殊的文件系统procfs,通常以/proc目录的形式呈现。该目录中包含了许多特殊文件用来对驱动程序和内核信息进行更高层的访问。只要应用程序有正确的访问全息,就可以通过读写这些文件获得信息或设置参数。
例如/proc/cpuinfo给出的是cpu的详细信息:
我的笔记本是4核机器
processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz stepping : 9 microcode : 0x1c cpu MHz : 1227.289 cache size : 4096 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 2 apicid : 3 initial apicid : 3 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht
tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf
eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt
tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept
vpid fsgsbase smep erms xsaveopt bugs : bogomips : 5787.00 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management:
类似地,cat /proc/meminfo 和cat /proc/version分别废除是内存使用情况和内核版本信息。
[root@dhcp-128-93 proc]# cat /proc/version Linux version 4.4.6-300.fc23.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org)
(gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC) ) #1 SMP Wed Mar 16 22:10:37 UTC 2016
每次读者写文件的内容时,他们所提供的信息都会及时更新。
---------------------
你可以通过心和函数获得更过的信息,位于/proc目录的子目录中,
例如,可以通过/proc/net/sockstat文件获得网络套接字的使用统计:
[root@dhcp-128-93 proc]# cat /proc/net/sockstat sockets: used 818 TCP: inuse 17 orphan 0 tw 1 alloc 29 mem 0 UDP: inuse 7 mem 1 UDPLITE: inuse 0 RAW: inuse 0 FRAG: inuse 0 memory 0
另外,/proc中的有些条目不仅可以被读取,而且还可以被修改。
例如系统中所有运行的程序同时能打开的文件总数是linux内核的一个参数,它的当前值可以通过读取/proc/sys/fs/file-max文件得到
[root@dhcp-128-93 proc]# cat /proc/sys/fs/file-max 370753
你可以对通过修改此文件,来修改linux的这个参数。
======================
/proc目录中一数字命名的子目录用于提供正在运行的程序的信息。
利用pe -ef | grep firefox查看firefox的进程号
可以在/proc/firefox进程号 文件中查看进程的执行情况
[root@dhcp-128-93 proc]# ls -l /proc/6669 total 0 dr-xr-xr-x. 2 lizhen lizhen 0 Jun 15 14:33 attr -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 autogroup -r--------. 1 lizhen lizhen 0 Jun 15 14:33 auxv -r--r--r--. 1 lizhen lizhen 0 Jun 14 21:47 cgroup --w-------. 1 lizhen lizhen 0 Jun 15 14:33 clear_refs -r--r--r--. 1 lizhen lizhen 0 Jun 14 21:47 cmdline -rw-r--r--. 1 lizhen lizhen 0 Jun 14 21:47 comm -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 coredump_filter -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 cpuset lrwxrwxrwx. 1 lizhen lizhen 0 Jun 15 14:33 cwd -> /home/lizhen -r--------. 1 lizhen lizhen 0 Jun 15 14:33 environ lrwxrwxrwx. 1 lizhen lizhen 0 Jun 14 21:47 exe -> /usr/lib64/firefox/firefox dr-x------. 2 lizhen lizhen 0 Jun 14 21:47 fd dr-x------. 2 lizhen lizhen 0 Jun 15 14:33 fdinfo -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 gid_map -r--------. 1 lizhen lizhen 0 Jun 15 14:33 io -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 latency -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 limits -rw-r--r--. 1 lizhen lizhen 0 Jun 14 21:47 loginuid dr-x------. 2 lizhen lizhen 0 Jun 15 14:33 map_files -r--r--r--. 1 lizhen lizhen 0 Jun 14 21:47 maps -rw-------. 1 lizhen lizhen 0 Jun 15 14:33 mem -r--r--r--. 1 lizhen lizhen 0 Jun 14 21:47 mountinfo -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 mounts -r--------. 1 lizhen lizhen 0 Jun 15 14:33 mountstats dr-xr-xr-x. 6 lizhen lizhen 0 Jun 15 14:33 net dr-x--x--x. 2 lizhen lizhen 0 Jun 14 21:47 ns -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 numa_maps -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 oom_adj -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 oom_score -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 oom_score_adj -r--------. 1 lizhen lizhen 0 Jun 15 14:33 pagemap -r--------. 1 lizhen lizhen 0 Jun 15 14:33 personality -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 projid_map lrwxrwxrwx. 1 lizhen lizhen 0 Jun 15 14:33 root -> / -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 sched -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 schedstat -r--r--r--. 1 lizhen lizhen 0 Jun 14 21:47 sessionid -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 setgroups -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 smaps -r--------. 1 lizhen lizhen 0 Jun 15 14:33 stack -r--r--r--. 1 lizhen lizhen 0 Jun 14 21:47 stat -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 statm -r--r--r--. 1 lizhen lizhen 0 Jun 14 21:47 status -r--------. 1 lizhen lizhen 0 Jun 15 14:33 syscall dr-xr-xr-x. 58 lizhen lizhen 0 Jun 14 21:47 task -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 timers -rw-r--r--. 1 lizhen lizhen 0 Jun 15 14:33 uid_map -r--r--r--. 1 lizhen lizhen 0 Jun 15 14:33 wchan [root@dhcp-128-93 proc]#