udev 규칙은 systemd 서비스를 트리거합니다.

udev 규칙은 systemd 서비스를 트리거합니다.

작업 중인 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_WANTSor 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유형 이어야 합니다 (여기에서 논의 참조).execsystemdudevUdev 이벤트에서 긴 프로세스를 실행하는 방법은 무엇입니까?udev토론 및 자동 설치를 위한 다른 페이지도 있습니다 .

관련 정보