비슷한 목적으로 실행되는 두 개의 시스템 장치가 이미 있습니다. 다음과 같은 이유로 GDM이 시작될 때 실행되는 간단한 유형 단위 myservice.service가 있습니다.
[Unit]
Description="Download fresh filee"
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=username
RemainAfterExit=true
StandardOutput=journal
ExecStart=/home/user/Documents/myscript.sh
ExecStop=/home/user/Documents/myscript.sh
[Install]
WantedBy=graphical.target
지금까지 잘 작동했습니다. 그런 다음 myservice.path 단위가 있습니다. 파일을 모니터링합니다. 이 파일을 수정하면 myservice.service도 실행됩니다.
[Unit]
Description="Monitor file"
After=network-online.target
Wants=network-online.target
[Path]
PathModified=/home/user/Documents/myfi.le
Unit=myservice.service
[Install]
WantedBy=multi-user.target
또한 사용자가 Gnome/GDM 세션을 잠금 해제할 때 myservice.service(또는 이 장치의 ExecStart에 있는 스크립트)를 시작하려고 합니다. 해결책을 찾으려고 노력했지만 실제로 유용한 것을 찾지 못했습니다. 내 말이 맞다면 type=dbus인 systemd 장치를 사용해야 합니다. 그러나 type=dbus에는 BusName=이 필요합니다.
그러나 이것이 내 사용 사례에 어떤 의미인지 전혀 모릅니다. 실제로 저는 실제 세션이 잠금 해제될 때 한 번만 스크립트를 시작합니다. 세션이 다시 잠겼다가(시간 초과 후 또는 수동으로) 다시 잠금이 해제되면 스크립트를 다시 실행해야 합니다.