작업 중인 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는 루트가 소유하고 서비스는 사용자가 소유한다는 사실과 관련이 있습니까? 제가 잘못 이해한 걸까요 WANTS
?
나는 SYSTEM_USER_WANTS
or SYSTEM_WANTS
, and or =
의 네 가지 조합을 모두 시도했습니다 +=
. 이를 제거하면 *_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
토론 및 자동 설치를 위한 다른 페이지도 있습니다 .