Udev — менеджер устройств для ядра Linux. Он появился в версии 2.6 и заменил своего предшественника — devfs
. Когда пользователь присоединяет или отсоединяет устройство, инструмент Udev создает или удаляет соответствующий узел (node) устройства в каталоге /dev
.
В этой статье мы расскажем, как использовать Udev для обнаружения и управления устройствами в Linux.
Содержание:
Что такое udevadm
Утилита udevadm
— инструмент командной строки, предназначенный для управления менеджером Udev. У нее есть различные подкоманды, которые позволяют собирать информацию об устройствах, а также выполнять административные задачи. Вот некоторые из них:
info
— позволяет получить подробную информацию о конкретном устройстве;monitor
— позволяет отслеживать события устройств в режиме реального времени;control
— используется для управления самим менеджером Udev;trigger
— запускает события Udev вручную;test
— имитирует событие Udev.
Для примера давайте запустим команду udevadm monitor
и подключим USB-накопитель:
Читайте также: Как настроить автоматическое резервное копирование файлов при подключении USB флешки к Linux.
На скриншоте выше видно, что Udev отследил событие add
(добавить).
Получение информации об устройстве
Допустим, нам нужно узнать подробную информацию о характеристиках нашего USB-накопителя. Для этого сперва выполним команду lsblk
, чтобы узнать его название:
Название нашего устройства — sdb1
. Теперь передадим путь к нему в качестве аргумента к команде udevadm info
:
После выполнения команды, мы получили следующие данные о флешке:
- абсолютный путь к устройству;
- уникальные идентификаторы, присвоенные ядром Linux или Udev;
- информация о характеристиках (производителе, модели, серийном номере и так далее);
- модули ядра, которые могут указывать на драйвер устройства;
- различные атрибуты, которые могут содержать информацию о состоянии устройства, его драйвере и так далее;
- пользовательские свойства;
- символические ссылки и многое другое.
Создание правил Udev
Правила Udev — файлы настроек, используемые менеджером Udev для управления устройствами при их обнаружении и взаимодействии с ними. С помощью этих правил можно:
- присваивать названия устройствам;
- назначать разрешения устройствам;
- запускать пользовательские действия при добавлении, удалении или изменении устройств.
Допустим, нам нужно создать правило, которое будет записывать информацию о подключении и отсоединении USB-устройств в файл.
Написание скриптов Bash
Для начала создадим скрипт, который будет выполняться при подключении USB-накопителя:
Добавим в него код, который будет записывать в конец файла /tmp/scripts.log
информацию о времени, когда устройство подключают в ОС:
Читайте также: 10 полезных советов для написания эффективных bash скриптов в Linux.
Создадим второй сценарий Bash, который будет выполняться при отсоединении USB-накопителя:
Затем запишем в него код, который будет записывать в конец файла /tmp/scripts.log
информацию о времени, когда устройство отсоединяют от ОС:
После, зададим этим скриптам права на исполнение для всех пользователей:
Создание триггеров для запуска скриптов
Чтобы скрипты Bash выполнялись автоматически, нужно задать условия (триггеры), при которых они будут запускаться. Для этого создадим файл с расширением *.rules
:
И запишем в него следующий код:
Мы создали в файле два триггера. В этом коде:
SUBSYSTEM=="usb"
— отслеживает устройства с подсистемой USB;ACTION=="add"
— указывает, что правило применяется при подключении USB-устройства;ACTION=="remove"
— указывает, что правило применяется при отключении USB-устройства;ENV{DEVTYPE}=="usb_device"
— применяет правило только к USB-устройствам;RUN+="/bin/device_added.sh"
— запускает скрипт/bin/device_added.sh
;RUN+="/bin/device_removed.sh"
— запускает сценарий/bin/device_removed.sh
.
Читайте также: 4 полезных способа узнать имя подключенного USB-устройства в Linux.
Затем перезагрузим правила и настройки управления Udev с помощью следующей команды:
Использование правил Udev
Теперь, когда правила Udev вступили в силу, можно проверить, как они работают. Для этого отсоединим USB-накопитель, обратно присоединим и в конце снова отсоединим его. Просмотрим содержимое файла /tmp/scripts.log
:
Как видно на скриншоте выше, в этом файле появились три записи.
Выводы
Менеджер Udev — полезный инструмент для управления устройствами в Linux. Мы рассказали, как он работает, и продемонстрировали Вам практические примеры создания правил Udev. Показанные в этой статье команды позволят эффективно управлять устройствами в ОС Linux.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.