LINUX.ORG.RU
решено ФорумAdmin

Передача параметров из udev в systemd сервис

 , ,


0

2

Не могу понять каким образом передать в конфиг сегвиса параметр из правила udev.

Для udev есть такое правило:

ATTRS{idVendor}=="17ba", ATTRS{idProduct}=="0511", TAG+="systemd", ENV{SYSTEMD_WANTS}="sauris.service", ENV{bus_num}="%E{BUSNUM}", ENV{dev_num}="%E{DEVNUM}"

Есть файл настроек sauris.service^

[Unit]
Description=isauris sau_proxy wrapper
After=syslog.target

[Service]
Type=idle
ExecStart=/opt/sauris/bin/runproxy %I

[Install]
WantedBy=multi-user.target

Правило срабатывает при подключении устройства по usb. В логах вижу запуск скрипта, но передаваемый скрипту параметр пустой.

А вот если в правиле udev написать вместо ENV{SYSTEMD_WANTS}=«sauris.service» что-то вроде ENV{SYSTEMD_WANTS}=«sauris@%E{DEVNAME}.service», то правило не срабатывает. В логах ни вызова скрипта, ни других ратефактов его работы в системе тоже нет.

Подскажите, что я делаю не так? И в каком мане про эти собачки написано?



Последнее исправление: youmych (всего исправлений: 1)

правило не срабатывает

Проверьте journalctl, возможно оно отрабатывает вовсе не так, как вы того ожидаете.
Сравните, что требует инстанс вашего сервиса в качестве аргумента и что передаётся в «%E{DEVNAME}».

в каком мане про эти собачки написано?

man systemd.service systemd.unit | grep -C3 @
ArcFi
()
Ответ на: комментарий от ArcFi

man systemd.service systemd.unit | grep -C3 @

Кажется, разобрался. Спасибо за наводку.

Что сделал, чтобы заработало:

  • Переименовал sauris.service в sauris@.service (именно с собакой)
  • Поправил секцию Install в соответствии с маном
    [Install]
    WantedBy=sauris.target
    

Думаю, что тему можно закрывать.

youmych
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.