로그인 시 udev 활성화 시스템 사용자 서비스를 시작하는 방법은 무엇입니까?

로그인 시 udev 활성화 시스템 사용자 서비스를 시작하는 방법은 무엇입니까?

launchpad-daemon.serviceUSB 장치가 연결되어 있을 때 시스템 사용자 서비스( )를 시작하고 장치가 분리되면 중지할 수 있도록 하는 약간 복잡한 설정이 있습니다 . 이는 다음 udev 규칙으로 구성됩니다:

SUBSYSTEM=="sound", ENV{ID_MODEL}=="Launchpad_Mini_MK3", ENV{SYSTEMD_USER_WANTS}+="launchpad-daemon.service"

그리고 사용자 서비스 구성은 다음과 같습니다.

[Service]
ExecStart=/.../launchpad-daemon-start
ExecStopPost=/.../launchpad-daemon-stop
Type=simple
WorkingDirectory=/...

[Unit]
Description=Novation Launchpad daemon
StopWhenUnneeded=true

이 기능은 로그인한 상태에서 USB 장치를 연결/분리할 때 유용합니다. 안타깝게도 장치가 연결된 상태에서 로그인하면 기능이 작동하지 않습니다. systemctl --user status수동으로 시작하거나 장치를 다시 연결하지 않으면 서비스가 비활성 상태로 보고됩니다. 일반적으로 다음과 같이 설정하여 로그인 시 서비스를 시작 WantedBy=graphical-session.target하지만 USB 장치의 사용 가능 여부에 관계없이 서비스가 시작될 수 있습니다.

로그인 시 서비스가 자동으로 시작되도록 하는 방법만약에 그리고 만약에USB 장치가 연결되어 있습니까?

답변1

당신은 추가할 수 있습니다

[Unit]
ConditionPathExists=/dev/path/to/mydevice 
# e.g. /dev/disk/by-id/usb-Ut165_USB2FlashStorage_0805090215d3a7-0

지정된 장치 파일이 존재할 때만 서비스를 시작하는 것은 제외됩니다 WantedBy=sometarget.target(즉, 장치가 연결되어 있는 경우).

그러나 이는 와일드카드 서비스에는 적용되지 않습니다.

관련 정보