同様の目的で実行される 2 つのシステムデバイスが既に存在します。次の理由で、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= が必要です。
しかし、これが私のユースケースにどのような意味なのかわかりません。実際、私は実際のセッションがロック解除されたときに一度だけスクリプトを起動します。セッションが再びロックされて(タイムアウト後または手動で)再ロックが解除された場合は、スクリプトを再実行する必要があります。