Найти тему
Сисадмин

Виртуальные файловые системы linux (sysfs)

sysfs linux
sysfs linux

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 позволяет эффективно управлять параметрами системы и получать информацию о состоянии устройств в реальном времени.