sysfs — это виртуальная файловая система, предоставляемая ядром Linux, которая экспортирует информацию о системе и устройствах, подключенных к ней, в виде файлов и директорий. Файловая система sysfs обычно монтируется в директории /sys и предоставляет удобный интерфейс для доступа к различным атрибутам устройств, драйверов и других компонентов ядра.
Основные функции и возможности sysfs
- Информация об устройствах: доступ к информации о всех устройствах, подключенных к системе.
- Информация о драйверах: доступ к информации о драйверах устройств.
- Информация о параметрах ядра: доступ к различным параметрам и настройкам ядра.
- Управление устройствами: возможность изменения параметров устройств.
Примеры использования sysfs
Получение информации об устройствах
Просмотр информации о процессоре:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Просмотр информации о сетевом интерфейсе:
cat /sys/class/net/eth0/address
Просмотр информации о подключенных USB-устройствах:
ls /sys/bus/usb/devices/
Изменение параметров устройств
Изменение политики управления питанием процессора:
echo "performance" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Включение или отключение устройства (например, сетевого интерфейса):
echo "1" | sudo tee /sys/class/net/eth0/device/power/wakeup
Получение информации о температуре системы
Просмотр температуры процессора:
cat /sys/class/thermal/thermal_zone0/temp
Управление устройствами
Сброс USB-устройства:
echo "1" | sudo tee /sys/bus/usb/devices/usb1/authorized
Изменение яркости подсветки экрана:
echo "100" | sudo tee /sys/class/backlight/acpi_video0/brightness
Примеры использования в скриптах
Автоматическое изменение политики управления питанием
#!/bin/bash
# Установить политику управления питанием для всех процессоров на "performance" for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" | sudo tee $cpu done
Мониторинг и логирование температуры процессора
#!/bin/bash
LOGFILE="/var/log/cpu_temp.log"
while true; do TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
DATE=$(date +"%Y-%m-%d %H:%M:%S")
echo "$DATE: $TEMP" >> $LOGFILE sleep 60
done
sysfs — это мощный инструмент в Linux для доступа к информации о системе и управления аппаратными устройствами. Он предоставляет удобный интерфейс для взаимодействия с ядром и его компонентами через файловую систему, что делает его полезным для системных администраторов и разработчиков. Понимание работы с sysfs позволяет эффективно управлять параметрами системы и получать информацию о состоянии устройств в реальном времени.