• sys文件系统


    以下内容源于网络资源的学习与整理,如有侵权请告知删除。

    前言

    Linux2.6版本的内核引入了sys文件系统。

    在 proc文件系统介绍和使用 中,介绍了sys文件系统与proc文件系统的差异。它们都是虚拟文件系统,都是内核中的数据结构的可视化接口。它们分别挂载在/sys目录、/proc目录下。

    与proc文件系统类似,通过sys文件系统可以查看系统相关的信息。

    sys文件系统中与设备驱动相关的文件节点,可视为 /dev 文件系统的替代者。

    sys文件系统的主要作用,是对系统上的设备与总线进行组织与管理,以形成分级的文件。用户空间可以访问或配置这些文件,进而得知系统状态或者控制系统。

    目录含义

    下面简述/sys目录中的目录所代表的含义。

    1. root@ubuntu:/sys# tree -L 1
    2. .
    3. ├── block
    4. ├── bus
    5. ├── class
    6. ├── dev
    7. ├── devices
    8. ├── firmware
    9. ├── fs
    10. ├── hypervisor
    11. ├── kernel
    12. ├── module
    13. └── power
    14. 11 directories, 0 files
    15. root@ubuntu:/sys# ls

    1、class目录

    将设备按照功能分类。

    如/sys/class/net包括了所有网络接口。

    其中 power_supply 可以查看充电相关的信息。

    1. root@ubuntu:/sys/class# ls
    2. ata_device dma i2c-adapter powercap scsi_device tty
    3. ata_link dmi input power_supply scsi_disk vc
    4. ata_port drm leds ppdev scsi_generic virtio-ports
    5. backlight extcon mdio_bus ppp scsi_host vtconsole
    6. bdi firmware mem printer sound watchdog
    7. block gpio misc pwm spi_host
    8. bluetooth graphics mmc_host regulator spi_master
    9. bsg hidraw net rfkill spi_transport
    10. devfreq hwmon pci_bus rtc thermal
    11. root@ubuntu:/sys/class# cd net
    12. root@ubuntu:/sys/class/net# ls
    13. eth0 lo
    14. root@ubuntu:/sys/class/net# ls -l
    15. 总用量 0
    16. lrwxrwxrwx 1 root root 0 Jul 4 20:50 eth0 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/eth0
    17. lrwxrwxrwx 1 root root 0 Aug 2 00:03 lo -> ../../devices/virtual/net/lo
    18. root@ubuntu:/sys/class/net# cd eth0
    19. root@ubuntu:/sys/class/net/eth0# ls
    20. addr_assign_type device ifalias netdev_group speed uevent
    21. address dev_id ifindex operstate statistics
    22. addr_len dormant iflink phys_port_id subsystem
    23. broadcast duplex link_mode power tx_queue_len
    24. carrier flags mtu queues type
    25. root@ubuntu:/sys/class/net/eth0#

    2、block目录

    每个块设备在该目录下对应一个子目录。

    每个子目录中又包含一些属性文件,它们描述了这个块设备的各方面的属性,比如设备大小。另外,loop块设备是使用文件来模拟的。

    通过查看该目录下的详细信息,得知它们都是链接文件,指向/sys/devices/下的设备。

    1. root@ubuntu:/sys/block# ls
    2. loop0 loop3 loop6 ram1 ram12 ram15 ram4 ram7 sda
    3. loop1 loop4 loop7 ram10 ram13 ram2 ram5 ram8 sr0
    4. loop2 loop5 ram0 ram11 ram14 ram3 ram6 ram9 sr1
    5. root@ubuntu:/sys/block# cd sr0
    6. root@ubuntu:/sys/block/sr0# ls
    7. alignment_offset discard_alignment holders removable subsystem
    8. bdi events inflight ro trace
    9. capability events_async power size uevent
    10. dev events_poll_msecs queue slaves
    11. device ext_range range stat
    12. root@ubuntu:/sys/block/sr0# cat size
    13. 2097151
    14. root@ubuntu:/sys/block/sr0# cd ..
    15. root@ubuntu:/sys/block# ls -l sda
    16. 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
    17. root@ubuntu:/sys/block# ls -l sr0
    18. 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
    19. root@ubuntu:/sys/block# ls -l sr1
    20. 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
    21. root@ubuntu:/sys/block# ls -l ram1
    22. lrwxrwxrwx 1 root root 0 Aug 2 00:03 ram1 -> ../devices/virtual/block/ram1
    23. root@ubuntu:/sys/block# ls -l loop1
    24. lrwxrwxrwx 1 root root 0 Aug 2 00:03 loop1 -> ../devices/virtual/block/loop1
    25. root@ubuntu:/sys/block#

    3、bus目录

    在内核注册的每条总线,在该目录下对应一个子目录,比如i2c、spi、pci、scsi、usb等等。

    其中每个总线目录又包含两个子目录devices和drivers。devices目录包含了在整个系统中发现的、属于该总线类型的设备。drivers目录包含了注册到该总线的所有驱动。

    1. root@ubuntu:/sys/bus# ls
    2. ac97 cpu hid mdio_bus platform sdio virtio
    3. acpi eisa i2c mmc pnp serio workqueue
    4. clockevents event_source isa pci rapidio spi xen
    5. clocksource gameport machinecheck pci_express scsi usb xen-backend
    6. root@ubuntu:/sys/bus# cd cpu
    7. root@ubuntu:/sys/bus/cpu# ls
    8. devices drivers drivers_autoprobe drivers_probe uevent
    9. root@ubuntu:/sys/bus/cpu# cd devices/
    10. root@ubuntu:/sys/bus/cpu/devices# ls
    11. cpu0 cpu1
    12. root@ubuntu:/sys/bus/cpu/devices# cd cpu0
    13. root@ubuntu:/sys/bus/cpu/devices/cpu0# ls
    14. cache crash_notes_size firmware_node power topology
    15. crash_notes driver microcode subsystem uevent
    16. root@ubuntu:/sys/bus/cpu/devices/cpu0# cd ../../drivers
    17. root@ubuntu:/sys/bus/cpu/drivers# ls
    18. processor
    19. root@ubuntu:/sys/bus/cpu/drivers# cd processor/
    20. root@ubuntu:/sys/bus/cpu/drivers/processor# ls
    21. bind cpu0 cpu1 uevent unbind
    22. root@ubuntu:/sys/bus/cpu/drivers/processor#

    4、devices目录

    包含系统的所有设备。(它和/sys/dev目录有啥区别呢?)

    1. root@ubuntu:/sys# ls
    2. block bus class dev devices firmware fs hypervisor kernel module power
    3. root@ubuntu:/sys# cd dev
    4. root@ubuntu:/sys/dev# l
    5. block/ char/
    6. root@ubuntu:/sys/dev# cd char/
    7. root@ubuntu:/sys/dev/char# ls //下面的都是一些链接,指向/sys/devices相关设备
    8. 10:1 10:60 13:32 189:140 4:10 4:24 4:38 4:51 4:65 4:79 4:92
    9. 10:175 10:61 13:33 1:9 4:11 4:25 4:39 4:52 4:66 4:8 4:93
    10. //省略部分
    11. root@ubuntu:/sys/dev/char# cd ../../devices/
    12. root@ubuntu:/sys/devices# ls
    13. breakpoint isa pci0000:00 pnp0 rapidio system virtual
    14. cpu LNXSYSTM:00 platform pnp1 software tracepoint
    15. root@ubuntu:/sys/devices# cd pci0000\:00/
    16. root@ubuntu:/sys/devices/pci0000:00# ls
    17. 0000:00:00.0 0000:00:15.0 0000:00:16.1 0000:00:17.2 0000:00:18.3
    18. 0000:00:01.0 0000:00:15.1 0000:00:16.2 0000:00:17.3 0000:00:18.4
    19. 0000:00:07.0 0000:00:15.2 0000:00:16.3 0000:00:17.4 0000:00:18.5
    20. 0000:00:07.1 0000:00:15.3 0000:00:16.4 0000:00:17.5 0000:00:18.6
    21. 0000:00:07.3 0000:00:15.4 0000:00:16.5 0000:00:17.6 0000:00:18.7
    22. 0000:00:07.7 0000:00:15.5 0000:00:16.6 0000:00:17.7 firmware_node
    23. 0000:00:0f.0 0000:00:15.6 0000:00:16.7 0000:00:18.0 pci_bus
    24. 0000:00:10.0 0000:00:15.7 0000:00:17.0 0000:00:18.1 power
    25. 0000:00:11.0 0000:00:16.0 0000:00:17.1 0000:00:18.2 uevent
    26. root@ubuntu:/sys/devices/pci0000:00# cd ../cpu
    27. root@ubuntu:/sys/devices/cpu# ls
    28. events format perf_event_mux_interval_ms power rdpmc subsystem type uevent
    29. root@ubuntu:/sys/devices/cpu#

    5、fs目录

    描述系统中的文件系统。

    6、filewire目录

    描述系统中的固件。

    7、power目录

    描述系统中的电源选项。

    8、module目录

    描述系统中的模块信息。

    9、kernel目录

    内核中的配置参数。

  • 相关阅读:
    maven 重复依赖不同版本 选择规则
    浅谈JS中null的江湖地位
    【K8S运维实操】关于docker和k8s的一些命令、镜像制作的实操
    嵌入式实时操作系统的设计与开发(互斥量学习)
    leetcode 817. 链表组件(java)
    二手车之家业务缓存应用实战
    【python基础】函数详解:编写函数、传递参数、使用位置实参、函数存储到模块中、函数编写指南
    企业级低代码平台,JeecgBoot-Vue3版 v1.3.0 版本正式发布
    【一】初步认识数据库
    leetcode 1207. Unique Number of Occurrences(出现次数的唯一性)
  • 原文地址:https://blog.csdn.net/oqqHuTu12345678/article/details/126112322