Появляется правило USB UDEV для запуска скрипта много раз
Я написал пользовательское правило udev, которое ищет конкретное USB-устройство для подключения, а затем запускает несколько команд gphoto. Увидеть ниже:
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="32a1", RUN+="/usr/bin/gphoto2 --set-config /main/settings/capturetarget=1 && /usr/bin/gphoto2 --capture-image --interval 5"
По сути, это должно позволить моей подключенной камере установить метод хранения на SD-карту камеры, а затем делать фотографии каждые 5 секунд для бесконечного количества снимков (или пока я не отключу камеру). Тем не менее, приложение, кажется, работает несколько экземпляров себя (может быть что-то еще происходит, хотя). После нескольких фотографий (5–15) камера перестает делать снимки.
Тем не менее, когда я запускаю эти точные команды как локальный пользователь (то есть пользователь: пи на малиновом пи), камера работает, как я и ожидал.
Любая помощь очень ценится, так как я довольно плохо знаком с правилами udev и не понимаю, почему это не работает.
1 ответ
Одна проблема с вашим рецептом заключается в том, что вы используете синтаксис оболочки, а именно структуру command1 && command2. Но udev не передает команду оболочке, поэтому такие конструкции оболочки, как управление заданиями и перенаправление ввода-вывода, НЕ доступны.
Вы можете использовать что-то вроде
RUN+="sh -c 'некоторые команды здесь, но вы не можете использовать двойные кавычки'"
Во всяком случае, я попал на этот вопрос, потому что у меня также есть проблема с тем, что правила udev для моей клавиатуры запускаются примерно 6 раз, когда я переключаю KVM.