Для чого каталог "/ sys"?


16

Деякий час назад я помітив цей каталог , який я ніколи не бачив раніше, /sys. Я трохи досліджував і читав, що у "сучасних системах Linux" часто є цей каталог і що він управляє пристроями. Я думав, що це / для чого / Я, здається, не можу знайти багато інформації про цей каталог, крім тієї, про яку я згадував, і цієї, цитованої на цій сторінці:

/ sys - це віртуальна файлова система, до якої можна отримати доступ для встановлення або отримання інформації про вигляд ядра системи.

Я вже деякий час керую Trusty, і ніколи цього не помічав, тому вважаю це трохи дивним. Хтось, будь ласка, заповнить мене? Яка різниця між цим та / dev? Коли Ubuntu почав використовувати цей каталог, і чому? Спасибі.


/sysіснує вже більше десяти років .
muru

1
Sidenote, можливо, стане в нагоді іншим користувачам: / proc і / sys каталоги, будучи віртуальною файловою системою, зникнуть, коли комп'ютер вимкнеться. Якщо ви коли-небудь встановили жорсткий диск з Linux на іншій ОС, ви побачите, що ці каталоги порожні.
Сергій Колодяжний

Відповіді:


28

/sysє старий . Він був введений до досягнення ядра Linux 2,6 (тоді, коли був розкол 2,4 / 2,5). Оскільки перший випуск Ubuntu використовував ядро ​​2.6 , у кожній версії Ubuntu був свій /sys.

/devмістить фактичні файли пристрою. Він не забезпечує доступ до всіх пристроїв , що ядро знає (наприклад, мережевими пристроями, для одного - ? Чому мережеві інтерфейси не в / розробника , як і інші пристрої , Чому Ethernet пристрої не відображаються в «/ DEV»? ). Це інтерфейс до самого пристрою - ви пишете на пристрій, читаєте з нього тощо.

/sysє інтерфейсом до ядра. Зокрема, він забезпечує подібний до файлової системи перегляд інформації та налаштувань конфігурації, які надає ядро, як і раніше /proc. Запис у ці файли може або не може записувати на фактичний пристрій, залежно від налаштування, яке ви змінюєте. Це не лише для керування пристроями, хоча це звичайний випадок використання.

Додаткову інформацію можна знайти в документації на ядро :

Top Level Directory Layout
~~~~~~~~~~~~~~~~~~~~~~~~~~

The sysfs directory arrangement exposes the relationship of kernel
data structures. 

The top level sysfs directory looks like:

block/
bus/
class/
dev/
devices/
firmware/
net/
fs/

devices/ contains a filesystem representation of the device tree. It maps
directly to the internal kernel device tree, which is a hierarchy of
struct device. 

bus/ contains flat directory layout of the various bus types in the
kernel. Each bus's directory contains two subdirectories:

    devices/
    drivers/

devices/ contains symlinks for each device discovered in the system
that point to the device's directory under root/.

drivers/ contains a directory for each device driver that is loaded
for devices on that particular bus (this assumes that drivers do not
span multiple bus types).

fs/ contains a directory for some filesystems.  Currently each
filesystem wanting to export attributes must create its own hierarchy
below fs/ (see ./fuse.txt for an example).

dev/ contains two directories char/ and block/. Inside these two
directories there are symlinks named <major>:<minor>.  These symlinks
point to the sysfs directory for the given device.  /sys/dev provides a
quick way to lookup the sysfs interface for a device from the result of
a stat(2) operation.

Наприклад:

  • Один із способів встановлення яскравості монітора ноутбука:

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • Щоб отримати MAC-адресу мережевої карти:

    cat /sys/class/net/enp1s0/address
    
  • Щоб отримати поточні регулятори масштабування процесора:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    

І так далі...


@muru: Що робити, якщо я хочу видалити один з цих файлів, який займає багато пам'яті? Я написав драйвер пристрою, який баггі (може бути), який перейшов у цикл і постійно записував у якийсь файл у каталог / sys / devices. Крім того, якщо я випадково видалю неправильний файл, який би це був вплив?
Бхавік Шах

2
@BhavikShah ви нічого не видаляєте звідси - ці файли насправді не існують. Вам доведеться видалити включений модуль.
муру
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.