以下内容源于网络资源的学习与整理,如有侵权请告知删除。
前言
Linux2.6版本的内核引入了sys文件系统。
在 proc文件系统介绍和使用 中,介绍了sys文件系统与proc文件系统的差异。它们都是虚拟文件系统,都是内核中的数据结构的可视化接口。它们分别挂载在/sys目录、/proc目录下。
与proc文件系统类似,通过sys文件系统可以查看系统相关的信息。
sys文件系统中与设备驱动相关的文件节点,可视为 /dev 文件系统的替代者。
sys文件系统的主要作用,是对系统上的设备与总线进行组织与管理,以形成分级的文件。用户空间可以访问或配置这些文件,进而得知系统状态或者控制系统。
目录含义
下面简述/sys目录中的目录所代表的含义。
root@ubuntu:/sys# tree -L 1 . ├── block ├── bus ├── class ├── dev ├── devices ├── firmware ├── fs ├── hypervisor ├── kernel ├── module └── power 11 directories, 0 files root@ubuntu:/sys# ls1、class目录
将设备按照功能分类。
如/sys/class/net包括了所有网络接口。
其中 power_supply 可以查看充电相关的信息。
root@ubuntu:/sys/class# ls ata_device dma i2c-adapter powercap scsi_device tty ata_link dmi input power_supply scsi_disk vc ata_port drm leds ppdev scsi_generic virtio-ports backlight extcon mdio_bus ppp scsi_host vtconsole bdi firmware mem printer sound watchdog block gpio misc pwm spi_host bluetooth graphics mmc_host regulator spi_master bsg hidraw net rfkill spi_transport devfreq hwmon pci_bus rtc thermal root@ubuntu:/sys/class# cd net root@ubuntu:/sys/class/net# ls eth0 lo root@ubuntu:/sys/class/net# ls -l 总用量 0 lrwxrwxrwx 1 root root 0 Jul 4 20:50 eth0 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/eth0 lrwxrwxrwx 1 root root 0 Aug 2 00:03 lo -> ../../devices/virtual/net/lo root@ubuntu:/sys/class/net# cd eth0 root@ubuntu:/sys/class/net/eth0# ls addr_assign_type device ifalias netdev_group speed uevent address dev_id ifindex operstate statistics addr_len dormant iflink phys_port_id subsystem broadcast duplex link_mode power tx_queue_len carrier flags mtu queues type root@ubuntu:/sys/class/net/eth0#2、block目录
每个块设备在该目录下对应一个子目录。
每个子目录中又包含一些属性文件,它们描述了这个块设备的各方面的属性,比如设备大小。另外,loop块设备是使用文件来模拟的。
通过查看该目录下的详细信息,得知它们都是链接文件,指向/sys/devices/下的设备。
root@ubuntu:/sys/block# ls loop0 loop3 loop6 ram1 ram12 ram15 ram4 ram7 sda loop1 loop4 loop7 ram10 ram13 ram2 ram5 ram8 sr0 loop2 loop5 ram0 ram11 ram14 ram3 ram6 ram9 sr1 root@ubuntu:/sys/block# cd sr0 root@ubuntu:/sys/block/sr0# ls alignment_offset discard_alignment holders removable subsystem bdi events inflight ro trace capability events_async power size uevent dev events_poll_msecs queue slaves device ext_range range stat root@ubuntu:/sys/block/sr0# cat size 2097151 root@ubuntu:/sys/block/sr0# cd .. root@ubuntu:/sys/block# ls -l sda lrwxrwxrwx 1 root root 0 Jul 4 20:50 sda -> ../devices/pci0000:00/0000:00:10.0/host32/target32:0:0/32:0:0:0/block/sda root@ubuntu:/sys/block# ls -l sr0 lrwxrwxrwx 1 root root 0 Aug 2 00:03 sr0 -> ../devices/pci0000:00/0000:00:11.0/0000:02:05.0/ata3/host2/target2:0:0/2:0:0:0/block/sr0 root@ubuntu:/sys/block# ls -l sr1 lrwxrwxrwx 1 root root 0 Aug 2 00:03 sr1 -> ../devices/pci0000:00/0000:00:11.0/0000:02:05.0/ata4/host3/target3:0:0/3:0:0:0/block/sr1 root@ubuntu:/sys/block# ls -l ram1 lrwxrwxrwx 1 root root 0 Aug 2 00:03 ram1 -> ../devices/virtual/block/ram1 root@ubuntu:/sys/block# ls -l loop1 lrwxrwxrwx 1 root root 0 Aug 2 00:03 loop1 -> ../devices/virtual/block/loop1 root@ubuntu:/sys/block#3、bus目录
在内核注册的每条总线,在该目录下对应一个子目录,比如i2c、spi、pci、scsi、usb等等。
其中每个总线目录又包含两个子目录devices和drivers。devices目录包含了在整个系统中发现的、属于该总线类型的设备。drivers目录包含了注册到该总线的所有驱动。
root@ubuntu:/sys/bus# ls ac97 cpu hid mdio_bus platform sdio virtio acpi eisa i2c mmc pnp serio workqueue clockevents event_source isa pci rapidio spi xen clocksource gameport machinecheck pci_express scsi usb xen-backend root@ubuntu:/sys/bus# cd cpu root@ubuntu:/sys/bus/cpu# ls devices drivers drivers_autoprobe drivers_probe uevent root@ubuntu:/sys/bus/cpu# cd devices/ root@ubuntu:/sys/bus/cpu/devices# ls cpu0 cpu1 root@ubuntu:/sys/bus/cpu/devices# cd cpu0 root@ubuntu:/sys/bus/cpu/devices/cpu0# ls cache crash_notes_size firmware_node power topology crash_notes driver microcode subsystem uevent root@ubuntu:/sys/bus/cpu/devices/cpu0# cd ../../drivers root@ubuntu:/sys/bus/cpu/drivers# ls processor root@ubuntu:/sys/bus/cpu/drivers# cd processor/ root@ubuntu:/sys/bus/cpu/drivers/processor# ls bind cpu0 cpu1 uevent unbind root@ubuntu:/sys/bus/cpu/drivers/processor#4、devices目录
包含系统的所有设备。(它和/sys/dev目录有啥区别呢?)
root@ubuntu:/sys# ls block bus class dev devices firmware fs hypervisor kernel module power root@ubuntu:/sys# cd dev root@ubuntu:/sys/dev# l block/ char/ root@ubuntu:/sys/dev# cd char/ root@ubuntu:/sys/dev/char# ls //下面的都是一些链接,指向/sys/devices相关设备 10:1 10:60 13:32 189:140 4:10 4:24 4:38 4:51 4:65 4:79 4:92 10:175 10:61 13:33 1:9 4:11 4:25 4:39 4:52 4:66 4:8 4:93 //省略部分 root@ubuntu:/sys/dev/char# cd ../../devices/ root@ubuntu:/sys/devices# ls breakpoint isa pci0000:00 pnp0 rapidio system virtual cpu LNXSYSTM:00 platform pnp1 software tracepoint root@ubuntu:/sys/devices# cd pci0000\:00/ root@ubuntu:/sys/devices/pci0000:00# ls 0000:00:00.0 0000:00:15.0 0000:00:16.1 0000:00:17.2 0000:00:18.3 0000:00:01.0 0000:00:15.1 0000:00:16.2 0000:00:17.3 0000:00:18.4 0000:00:07.0 0000:00:15.2 0000:00:16.3 0000:00:17.4 0000:00:18.5 0000:00:07.1 0000:00:15.3 0000:00:16.4 0000:00:17.5 0000:00:18.6 0000:00:07.3 0000:00:15.4 0000:00:16.5 0000:00:17.6 0000:00:18.7 0000:00:07.7 0000:00:15.5 0000:00:16.6 0000:00:17.7 firmware_node 0000:00:0f.0 0000:00:15.6 0000:00:16.7 0000:00:18.0 pci_bus 0000:00:10.0 0000:00:15.7 0000:00:17.0 0000:00:18.1 power 0000:00:11.0 0000:00:16.0 0000:00:17.1 0000:00:18.2 uevent root@ubuntu:/sys/devices/pci0000:00# cd ../cpu root@ubuntu:/sys/devices/cpu# ls events format perf_event_mux_interval_ms power rdpmc subsystem type uevent root@ubuntu:/sys/devices/cpu#5、fs目录
描述系统中的文件系统。
6、filewire目录
描述系统中的固件。
7、power目录
描述系统中的电源选项。
8、module目录
描述系统中的模块信息。
9、kernel目录
内核中的配置参数。