Я пытаюсь запустить сценарий, когда устройство подключено. Мои файлы udev и systemd загружаются и запускаются, но скрипт запускается только один раз. Если я отключу и снова подключу устройство, скрипт больше не запускается. Я обнаружил, что перезагрузка systemctl в конце моего скрипта решит эту проблему (этот метод работает только для «пользовательских» сервисов systemd). В предыдущей версии Ubuntu я мог просто использовать udev с systemd, и это всегда работало. Также не имело значения, использую ли я служебные файлы «пользовательские» или «системные». Оба они работали, что также позволило мне запускать команды от имени пользователя root.
Я не думаю, что проблема в моем сценарии, поскольку простой запуск файла или команда notify-send будут работать только после перезагрузки systemctl (или после перезагрузки).
Как я могу использовать systemd, если мне не нужно постоянно перезагружать systemctl, чтобы она работала? Также, если возможно, как мне восстановить использование systemd / system, чтобы я мог запускать скрипты как root?
Изменить: Я использую настольную версию Ubuntu 20.04.
Я использовал команду systemctl status
, и она показала, что у меня произошел сбой службы (это был не мой файл настраиваемой службы). Я отключил сервис и перезагрузил. Больше нет сбойных сервисов, но моя первоначальная проблема сохраняется.
Ответ ОП, удален из вопроса:
Исправлено: я добавил
ENV{SYSTEMD_USER_WANTS}+="myfile.service"
в свой файл udev, и, похоже, он исправлен проблема. Спасибо за предложение.Также спасибо всем, кто не пожалел своего времени.
Моя запись
udev
:ACTION=="добавить", ATTRS{product}=="DTK-2100", ATTRS{idProduct}=="00cc", ATTRS{idVendor}= ="056a", ТАГ+="системд"
моя
системная
запись:[Сервис] Тип = разветвление Перезапустить=нет ExecStart=/home/anon/xsetwacom.sh [Установить] WantedBy=default.target WantedBy=sys-devices-pci0000:00-0000:00:1a.2-usb5-5\x2d1-5\x2d1:1.0.device