Как я могу определить, подключена ли флешка под Linux? - PullRequest
5 голосов
/ 05 октября 2009

Как я могу определить, подключена ли флешка? Я использую чистую установку Debian без какого-либо графического интерфейса и хочу получать уведомления в моем скрипте Python, когда появляется новая флешка ... Я знаю, что D-BUS распространяет такую ​​информацию, но я не хочу использовать D-BUS. Есть ли более открытый доступ к этой информации? Разве это не должно быть доступно в / proc или / sys? Как я могу "подключиться" к этому источнику?

Bye Фальстаф

Ответы [ 6 ]

9 голосов
/ 05 октября 2009

Все дистрибутивы Mayor Linux включают udev , который позволяет писать собственные сценарии для аппаратных событий.

6 голосов
/ 05 октября 2009

Вы можете читать события из ядра через сокет Netlink и искать события, где "ACTION" равно "add" (вы также можете посмотреть, был ли смонтирован раздел с устройства или не монтируется, или если устройство удаляется). Это настолько близко к источнику событий, насколько это возможно в пользовательском пространстве. Насколько я знаю, именно так udev обнаруживает вставленный съемный носитель.

Но, вероятно, с использованием D-Bus / HAL API через Python bingings будет намного проще (нет необходимости разбирать данные и т. Д.). Не уверен, почему вы против этого. Поскольку вы используете Python, я подозреваю, что проблема не в ресурсах.

4 голосов
/ 05 октября 2009

Если вы нацелены на встроенное устройство, вы можете запустить mdev вместо udev. Затем вы можете написать правила mdev, которые достаточно просты и запускают скрипт.

Конечно, вы не отслеживаете напрямую из своего скрипта, mdev делает это, но вы можете запустить любую команду. Вы, вероятно, можете сделать то же самое с udev, но это всегда выглядело довольно сложно для меня.

1 голос
/ 05 октября 2009

Когда устройство USB подключено, системный журнал записывает сообщения об этом в / var / log / messages. Команда "dmesg" показывает этот журнал. Вы можете проверить в конце журнала, чтобы увидеть, к какому каналу было подключено устройство, обычно это / dev / sd (буква) (число) в зависимости от разделов и количества последовательных дисков, подключенных к системе.

0 голосов
/ 04 мая 2013

Я сделал это используя zenity в скрипте и udev с правилом на rhel6 с:

KERNEL == "sd [b-d]", DRIVERS == "usb", ACTION == "add", RUN + = "/ path / to / script"

0 голосов
/ 05 октября 2009

/ proc / partitions показывает все известные ядру разделы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...