Запустите команду, когда диск вставлен (Linux)

Я хотел бы автоматически запускать собственную команду каждый раз, когда в Linux вставляется диск (например, USB-накопители). Очевидно, что самым простым решением было бы регулярно опрашивать и проверять наличие изменений в /proc/partitions или в /dev/disk, но я надеялся на что-то более элегантное.

РЕДАКТИРОВАТЬ

Я знаю, что это возможно, потому что GNOME делает именно это; каждый раз, когда вставляется новый диск, GNOME запускает собственный механизм автозапуска, чтобы предпринять какие-либо действия. ("Хотите посмотреть фотографии на этой SD-карте?")

Для этого я могу предложить два варианта использования: первый - в кластере Amazon EC2, которым я управляю, для автоматического обнаружения и инициализации новых подключенных томов хранения EBS.

Другое использование на домашнем файловом сервере на базе Linux; когда я вставляю SD-карту в устройство, она должна смонтировать карту, переместить изображения с карты на внутренний жесткий диск, отсоединить карту, а затем подать звуковой сигнал, чтобы сообщить мне, что это сделано.

3 ответа

Решение

Правила Udev - это то, что вы ищете. С самой страницы руководства:

... Если udev получает событие устройства, оно сопоставляет свои настроенные правила с доступными атрибутами устройства, предоставленными в sysfs для идентификации устройства. Соответствующие правила могут предоставлять дополнительную информацию об устройстве или указывать имя узла устройства и несколько имен символических ссылок и инструктировать udev запускать дополнительные программы как часть обработки событий устройства....

Акцент мой.

Файлы правил находятся в /etc/udev/rules.d/, а их документация - в udev(7). Ох, и они работают практически для всего.

Я нашел довольно хорошую ссылку здесь. http://linlog.skepticats.com/content/udevautorun/

По сути, вы можете поместить скрипты в /etc/udev для всех блочных устройств или конкретных.

Autorun ( http://linux.die.net/man/1/autorun) заботится о компакт-дисках, но я не думаю, что что-то подобное существует для других медиа. Я действительно не считаю, что это / должно /, либо.

Возможно, вы сможете настроить автозапуск на просмотр dmesg, но есть вероятность, что он будет работать только для вашей системы питомцев.

Какова ваша общая цель? Может быть, есть лучший способ?

Другие вопросы по тегам