Правило Удева не используется?

Я настраиваю udev для работы с внешним жестким диском USB, когда он подключается и удаляется (пока нет установки). До сих пор я сделал два новых правила в /etc/udev/rules.d/10-local.rules для регистрации добавления / удаления диска в файл:

 SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/echo 'inserted lacie' >> /home/herman/udev_file" SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="remove", RUN+="/bin/echo 'removed lacie' >> /home/herman/udev_file" 

Я запустил демона udevd и повторно подключил жесткий диск несколько раз, но /home/herman/udev_file никогда не создавался. В правилах я использовал ключи из команды udevadm info -a -n /dev/sdb которая является жестким диском. Что я здесь делаю неправильно? Диск обнаружен, и я могу mount его просто отлично. Любая помощь оценивается.

udev выводит информацию о протоколировании в /var/log/messages , но по умолчанию он регистрирует только ошибки, и, случается, вы создали команду, которая не делает то, что вы хотите, но также не выдает ошибку. Переадресация >> обрабатывается вашей оболочкой, а udev не запускает команду через оболочку, поэтому она буквально запускает двоичный /bin/echo и передает ему 'inserted lacie' >> /home/herman/udev_file аргументы 'inserted lacie' >> /home/herman/udev_file . Если вы измените udev на регистрацию больше (отредактируйте /etc/udev/udev.conf и добавьте строку udev_log="info" ), вы увидите, что она запускает эту команду, а выход 'inserted lacie' >> /home/herman/udev_file

Лично я предпочитаю делать короткие сценарии оболочки, которые делают то, что я хочу, поэтому я могу редактировать их без перезапуска udev , но вы также можете использовать /bin/sh -c для запуска вашей команды, чтобы обработать перенаправление:

 SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/sh -c '/bin/echo inserted lacie >> /home/herman/udev_file'"