linux的proc?linux编译安装软件
大家好,今天小编来为大家解答linux的proc这个问题,linux编译安装软件很多人还不知道,现在让我们一起来看看吧!
Linux里面proc是什么
proc被称为虚拟文件系统,它是一个控制中心,可以通过更改其中某些文件改变内核运行状态,它也是内核提空给我们的查询中心,用户可以通过它查看系统硬件及当前运行的进程信息。
Linux中许多工具的数据来源正是proc目录中的内容,比如lsmod的命令是cat/proc/modules的别名。
在Linux中存在着一类特殊的伪文件系统,用于使用与文件接口统一的操作来完成各种功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中应用最广泛的一种伪文件系统。
就文件系统这一术语而言,/proc目录并不是真正的文件系统,它是一个虚拟文件系统,有时也被称为进程信息伪文件系统。
proc放置的数据都是在内存当中,例如系统内核、进程、外部设备的状态及网络状态等。因为这个目录下的数据都是在内存当中,所以本身不占任何硬盘空间。
procfs是Linux内核信息的抽象文件接口,大量内核中的信息以及可调参数都被作为常规文件映射到一个目录树中,这样我们就可以简单直接的通过echo或cat这样的文件操作命令对系统信息进行查取和调整了。同时procfs也提供了一个接口,使得我们自己的内核模块或用户态程序可以通过procfs进行参数的传递。在当今的Linux系统中,大量的系统工具也通过procfs获取内核参数,例如ps、lspci等等,没有procfs它们将可能不能正常工作。
proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
Linux中的proc目录详细介绍
1.什么是proc
观察LINUX F8的/etc/rc.d/sysinit文件可以发现,在该脚本的21行出现如下语句:
复制代码代码如下:
if [!-e/proc/mounts ]; then
mount-n-t proc/proc/proc
mount-n-t sysfs/sys/sys>/dev/null 2>&1
fi
这断话的意思是,如果/proc/mounts文件存在,便挂载proc类型的文件系统的proc设备到proc目录下,挂载sysfs类型的文件系统的sys设备到/sys目录下。那么,究竟proc文件系统是什么东西呢?
proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
2. proc的主要目录和文件
它的主要目录和文件结构如下:(/proc/)
复制代码代码如下:
apm#高级电源管理信息
bus#总线配置信息(USB的配置也记录在此)
cmdline#内核命令行
Cpuinfo#关于Cpu信息
Devices#可以用到的设备(块设备/字符设备)
Dma#使用的DMA通道
Filesystems#支持的文件系统
Interrupts#中断的使用
Ioports# I/O端口的使用
Kcore#内核核心印象
Kmsg#内核消息
Ksyms#内核符号表
Loadavg#负载均衡
Locks#内核锁
Meminfo#内存信息
Misc#杂项
Modules#加载模块列表(可以想成是驱动程序)
Mounts#加载的文件系统
Partitions#系统识别的分区表
PCI#在PCI总线上,每台设备的详细情况(可以使用lspci来查看)
Rtc#实时时钟
Slabinfo Slab#池信息
Stat#全面统计状态表
Swaps#对换空间的利用情况
Version#内核版本
Uptime#系统正常运行时间
除了以上的目录外,主机上正在运行的各进程的PID号也以目录名的形式存在于/proc目录下。其中cmdline文件和environ文件值得一提,前者表示启动这个进程的命令串;后者是这个进程的环境变量的内容。它们均可以使用cat命令进行查看。
如图1所示,2088号进程是由startx命令产生的,即当前的Xwindows模式。
图1
3. proc目录下的cmdline是什么
在/etc/rc.d/sysinit脚本的306行出现了如下代码:
复制代码代码如下:
cmdline=$(cat/proc/cmdline)
意思是把/proc/cmdline的内容赋予cmdline变量。而前面说过/proc/cmdline的内容指的是内核命令行。我们先不去纠缠什么是内核命令行,来看看它的内容。如图2所示。
图2
可以发现,它的内容是一段一段离散的字段。很显然这些字符是由内核产生的,它们表示了系统运行环境的一些基本信息,它们在系统完全启动之前就已经确定。这些字段就像标志位一样,因此后续的启动,就可以根据这些“标志位”来进行相关的启动操作。
那么它是由谁产生的呢?粗糙的讲,可以说是由grub生成的。Grub(Grand Unified Bootloader)引导加载程序,它是计算机读取完BIOS信息后,从第一个启动设备的MBR中被读取的内容。没有它,核心根本就不能被加载到系统上。Grub的功能有很多,我们暂时不需要深入的了解。其中的kernel语句,告诉了磁盘的MBR到什么地方去读取系统内核以及辅助系统启动的initrd(InitalRAM Disk)印象文件在什么地方。同时可以加入一些启动参数,如是否打开RHGB,是否强制扫描...而这些字段,都通通的反映在了内核虚拟文件系统/proc里面的cmdline里面。
因此,当我们需要在系统启动的时候判断某些服务是否被激活时,当然要看看/proc/cmdline里面的内容啦。
Linux下/proc目录介绍
Linux下的/proc目录是内核提供的一种机制,用于在运行时访问内核内部数据结构和改变内核设置。它是一个伪文件系统,以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序通过/proc可以获取系统信息,并能修改内核参数。系统的信息,如进程,是动态改变的,因此用户读取/proc文件时,是动态从系统内核读出所需信息并提交的。
在/proc目录中,存在多个子文件或子文件夹,如/sys、net、scsi和sys。特别地,sys目录是可写的,用于访问或修改内核参数;net和scsi则依赖于内核配置。对于进程信息,/proc目录下存在数字命名的目录,代表系统中当前运行的每一个进程,例如进程PID号的目录;self目录则是读取进程本身信息的接口。
以下是部分/proc目录中具体文件或子目录的介绍:
-/proc/buddyinfo:与内存区中的每个order的可用块数量和内存碎片相关。
-/proc/cmdline:启动时传递给kernel的参数信息。
-/proc/cpuinfo:CPU信息。
-/proc/crypto:内核使用的所有已安装加密密码及细节。
-/proc/devices:已加载设备并分类。
-/proc/dma:已注册使用的ISA DMA频道列表。
-/proc/execdomains:支持的execution domains信息。
-/proc/fb:帧缓冲设备列表,包括数量和控制它的驱动。
-/proc/filesystems:内核当前支持的文件系统类型。
-/proc/interrupts:x86架构中的每个IRQ中断数。
-/proc/iomem:每个物理设备在系统内存中的映射。
-/proc/ioports:一个设备的输入输出所使用的注册端口范围。
-/proc/kcore:代表系统的物理内存,存储为核心文件格式。
-/proc/kmsg:记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg处理。
-/proc/loadavg:根据过去一段时间内CPU和IO状态得出的负载状态,与uptime命令相关。
-/proc/locks:内核锁住的文件列表。
-/proc/mdstat:多硬盘、RAID配置信息。
-/proc/meminfo:RAM使用相关信息。
-/proc/misc:其他主要设备(设备号为10)上注册的驱动。
-/proc/modules:所有加载到内核的模块列表。
-/proc/mounts:系统中使用的所有挂载。
-/proc/mtrr:系统使用的Memory Type Range Registers(MTRRs)。
-/proc/partitions:分区中的块分配信息。
-/proc/pci:系统中的PCI设备列表。
-/proc/slabinfo:系统中所有活动的slab缓存信息。
-/proc/stat:所有CPU活动信息。
-/proc/sysrq-trigger:使用echo命令写入时,远程root用户可以执行关键系统请求命令。
-/proc/uptime:系统已经运行了多久。
-/proc/swaps:交换空间的使用情况。
-/proc/version:Linux内核版本和gcc版本。
在/proc目录中,还存在针对特定进程的信息目录,如/proc/N,这里N代表进程ID。这些目录提供了关于特定进程的详细信息,如启动命令、当前工作目录、环境变量、执行命令文件、文件描述符、内存映射信息等。
举例来说,要查看/proc目录中的内容,可以使用`ls/proc/`命令。此外,/proc/sys目录包含了系统信息和内核参数,例如,要查看当前配置的文件句柄最大数,可以使用`cat/proc/sys/fs/file-max`命令。改变内核参数可以通过编辑或重定向到文件中完成,例如,使用`echo 8192>/proc/sys/fs/file-max`来增加文件句柄的最大数目。