Запустите команду, когда диск вставлен (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, но есть вероятность, что он будет работать только для вашей системы питомцев.
Какова ваша общая цель? Может быть, есть лучший способ?