У меня есть следующее правило udev (/etc/udev/rules.d/97-automounter.rules), которое работает для действия "удалить", но не работает для действия "добавить". Скрипт для действия "добавить" работает, если запустить вручную.

# rule: mount/umount /dev/vd* when EBS volume is attached.
ENV{DEVNAME}=="/dev/vd[b-z]", ACTION=="add", SUBSYSTEMS=="block", RUN+="/usr/local/sbin/udev-automounter.sh %k"
ENV{DEVNAME}=="/dev/vd[b-z]", ACTION=="remove", SUBSYSTEMS=="block", RUN+="/usr/local/sbin/udev-autounmounter.sh %k"

Не уверен, как это исправить или отладить. Любая помощь будет отличной.

1 ответ1

0

Похоже, у вас один и тот же вызов, независимо от того, добавлен он или удален:

"/usr/local/sbin/udev-autounmounter.sh %k"

что я не уверен, что% k вызывает, но это только местоположение разработчика. Тогда вам понадобится скрипт, чтобы узнать, нужно ли ему запускать блок добавления или удалять блок кода. При необходимости вырежьте часть добавления и создайте udev-add.sh, скопируйте часть удаления в скрипт udev-rem.sh и настройте имеющуюся у вас команду таким образом, чтобы она вызывала udev-add.sh для части добавления и udev. -rem.sh для удаления.

Это должно помочь вам. В противном случае вам понадобится указать сценарию, чтобы он вызывал подпрограмму добавления для добавлений, а также отдельную подпрограмму для удаления. Вы можете использовать переменную, если вы ДОЛЖНЫ использовать тот же сценарий, чтобы при удалении он также изменял переменную на что-то, поэтому при запуске сценария он проверяет переменную и говорит «эй», если эта переменная говорит «удалить», я запускаю эту часть, и если переменная установлена ИЛИ если она установлена на что-то другое, я запускаю только часть добавления.

То, как эта команда выглядит сейчас, это то, что она выполняет ту же подпрограмму добавления устройства, когда вызывается как для добавления, так и для удаления устройства.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .