Я хотел бы автоматически запускать собственную команду каждый раз, когда в Linux вставляется диск (включая, например, USB-накопители). Очевидно, самым простым решением было бы регулярно опрашивать и проверять наличие изменений в / proc / partitions или / dev / disk, но я надеялся на что-то более элегантное, чем это.
РЕДАКТИРОВАТЬ
Я знаю, что это возможно, потому что GNOME делает именно это; Каждый раз, когда вставляется новый диск, GNOME запускает собственный механизм «автозапуска», чтобы предпринять какие-то действия. ("Хотите просмотреть изображения на этой SD-карте?")
Я могу придумать два варианта использования этого: первое - в управляемом мной кластере Amazon EC2 для автоматического обнаружения и инициализации вновь подключенных томов хранилища EBS.
Другое использование - на домашнем файловом сервере на базе Linux; когда я вставляю SD-карту в устройство, она должна установить карту, переместить изображения с карты на внутренний жесткий диск, отключить карту и затем подать звуковой сигнал, чтобы я знал, что это сделано.
Правила Udev - это то, что вы ищете. На самой странице руководства:
... Если udev получает событие устройства, он сопоставляет свои настроенные правила с доступными атрибутами устройства, предоставленными в sysfs, для идентификации устройства. Соответствующие правила могут предоставить дополнительную информацию об устройстве или указать имя узла устройства и несколько имен символических ссылок и поручить udev запускать дополнительные программы как часть обработки событий устройства. ...
Акцент мой.
Файлы правил находятся в /etc/udev/rules.d/, а их документация - в udev (7). Да, и они работают практически для всего.
Я нашел здесь довольно хорошую ссылку. http://linlog.skepticats.com/content/udevautorun/
По сути, вы можете размещать скрипты в / etc / udev для всех блочных устройств или конкретных.
Автозапуск ( http://linux.die.net/man/1/autorun ) заботится о компакт-дисках, но я не думаю, что что-то подобное существует для других носителей. Я действительно не считаю, что это / должно / тоже.
Возможно, вам удастся создать автозапуск для просмотра dmesg при случае, но велики шансы, что он будет работать только для вашей системы питомцев.
Какова ваша общая цель? Может есть способ получше?