作業中のudevルール(/etc/udev/rules.d/10-local.rules
)を修正しています。
SUBSYSTEM=="tty", ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1015", ATTRS{serial}=="000621000000", SYMLINK+="ttymkw"
この内容(行末):
SUBSYSTEM=="tty", ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1015", ATTRS{serial}=="000621000000", SYMLINK+="ttymkw", TAG+="systemd", SYSTEMD_WANTS="offnet-uart-log.service"
offnet-uart-log.service
手動で実行できるユーザーサービスがありますが、~/.config/systemd/user
まだここまで到達していません。
, TAG+="systemd", SYSTEMD_WANTS="offnet-uart-log.service"
udevルールの最後に追加した後、シンボリックリンクは生成されません(reloadを使用しますsudo udevadm control --reload-rules && sudo udevadm trigger
)。
これはルールが間違っていることを示していますが、その理由は不明です。 udevはrootが所有し、サービスはユーザーが所有しているという事実に関連していますか?私が間違って理解したのでしょうかWANTS
?
SYSTEM_USER_WANTS
私はorSYSTEM_WANTS
とor=
の4つの組み合わせをすべて試しました+=
。これを削除すると*_WANTS
シンボリックリンクが表示されるため、エラーは*_WANTS
。
私のttyデバイスにロギングサービスをトリガーさせるにはどうすればよいですか?
編集:私の答えで述べたように動作するように修正SYSTEM_USER_WANTS
されましたENV{SYSTEM_USER_WANTS}
。なぜ必要ですか?
答え1
このブログ投稿私が望むことをし、そのおかげでそれを交換し、そのおかげSYSTEMD_USER_WANTS
でENV{SYSTEMD_USER_WANTS}
うまくいきました。
ENV{}
私はまだその構成がなぜ必要なのか、そしてなぜ文書でそれが見つからなかったのか理解していません。
答え2
本当に欲しいならトリガー追加するサービス
RUN{program}="/bin/systemctl --user start offnet-uart-log.service"
あなたのためウデブルール。これを行うには、通常、サービスが許可されているより短い時間内に通話が返される可能性があるoneshot
タイプである必要があります(ここでの議論を参照)。exec
systemd
udev
Udevイベントで長いプロセスを実行するには?udev
ディスカッションとサイレントインストールのための他のページもあります。