Linux
proc伪文件系统
某个大佬的解释:
形如: /proc/self/root/var/www/html/flag.php 是一种软链接,可以使用这种方式进行堆叠 /proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php
|
下面是详细信息:
procfs 文件系统是一个伪文件系统,它为内核数据结构提供接口。 最初就是用来跟内核交互的唯一方式,用来获取cpu、内存、设备驱动、进程等各种信息,proc下文件基本都是只读的。 /proc/cmdline 启动时传递给kernel的参数信息(就是bootargs信息) /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/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理 /proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关 /proc/locks 内核锁住的文件列表 /proc/mdstat 多硬盘,RAID配置信息(md=multiple disks) /proc/meminfo RAM使用的相关信息 /proc/misc 其他的主要设备(设备号为10)上注册的驱动 /proc/modules 所有加载到内核的模块列表 /proc/mounts 系统中使用的所有挂载 /proc/partitions 分区中的块分配信息 /proc/pci 系统中的PCI设备列表 /proc/slabinfo 系统中所有活动的 slab 缓存信息 /proc/stat 所有的CPU活动信息 /proc/uptime 系统已经运行了多久 /proc/swaps 交换空间的使用情况 /proc/version Linux内核版本和gcc版本 /proc/bus 系统总线(Bus)信息,例如pci/usb等 /proc/driver 驱动信息 /proc/fs 文件系统信息 /proc/ide ide设备信息 /proc/irq 中断请求设备信息 /proc/net 网卡设备信息 /proc/scsi scsi设备信息 /proc/tty tty设备信息 /proc/net/dev 显示网络适配器及统计信息 /proc/vmstat 虚拟内存统计信息 /proc/vmcore 内核panic时的内存映像 /proc/diskstats 取得磁盘信息 /proc/schedstat kernel调度器的统计信息 /proc/zoneinfo 显示内存空间的统计信息,对分析虚拟内存行为很有用 /proc/self 链接到当前正在运行的进程 以下是/proc目录中进程pid的信息 /proc/pid/cmdline 进程启动命令 /proc/pid/cwd 链接到进程当前工作目录 /proc/pid/environ 进程环境变量列表 /proc/pid/exe 链接到进程的执行命令文件 /proc/pid/fd 包含进程相关的所有的文件描述符 (ls /proc/pid/fd | wc -l 查看某个进程打开多少FD) /proc/pid/maps 与进程相关的内存映射信息 /proc/pid/mem 指代进程持有的内存,不可读 /proc/pid/root 链接到进程的根目录 /proc/pid/stat 进程的状态 /proc/pid/statm 进程使用的内存的状态 /proc/pid/status 进程状态信息,比stat/statm更具可读性
|
sysfs系统
导出内核对象,挂载在/sys目录,为设备驱动服务的 /sys/block 代表着系统中当前被发现的所有块设备 /sys/bus 一般来说每个子目录(总线类型)下包含两个子目录,一个是devices,另一个是drivers;其中devices下是这个总线类型下的所有设备,这些设备都是符号链接,它们分别指向真正的设备(/sys/devices/…下);而drivers下是所有注册在这个总线上的驱动,每个driver子目录下 是一些可以观察和修改的driver参数。 (它也是构成linux统一设备模型的一部分) /sys/class 该目录下包含所有注册在kernel里面的设备类型,每个设备类型表达具有一种功能的设备。每个设备类型子目录下是具体设备的符号链接,这些链接指向/sys/devices/…下的具体设备。设备类型和设备并没有一一对应的关系,一个物理设备可能具备多种设备类型;一个设备类型只表达具有一种功能的设备,比如:系统所有输入设备都会出现在/sys/class/input之下,而不论它们是以何种总线连接到系统的。(/sys/class也是构成linux统一设备模型的一部分) /sys/dev 该目录下有字符设备(block)和块设备(char)两个子目录,里面全是以主次设备号(major:minor)命名的链接文件,链接到/sys/devices /sys/devices 该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备 /sys/firmware 该目录下包含对固件对象(firmware object)和属性进行操作和观察的接口,即这里是系统加载固件机制的对用户空间的接口.(关于固件有专用于固件加载的一套API) /sys/fs 该目录用来描述系统中所有的文件系统,包括文件系统本身和按照文件系统分类存放的已挂载点。 /sys/kernel 该目录下存放的是内核中所有可调整的参数 /sys/module 该目录包含所有被载入Kernel的模块,无论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件) /sys/power 该目录下有几个属性文件可以用于控制整个机器的电源状态,如向其中写入控制命令让机器关机/重启等等。
|
debugfs系统
它是内核开发人员向用户空间提供信息的一种简单方法。 在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要主设备号次设备号等等,只需要实现一个file_operations,然后通过debugfs_create_file就可以在debugfs中建立一个文件结点,就像字符设备驱动那样,只需要对这个文件结点进行open就可以进行read、write、ioctl,等等操作,这些操作对应到我们在驱动里为debugfs准备的file_operations。 内核支持DEBUGFS,使能宏CONFIG_DEBUG_FS,在中内核配置
|
原文链接:https://blog.csdn.net/lll380475066/article/details/114385140