/etc/systemd/system/に次のtest.serviceを作成しました。
[Unit]
Description=Operations
After=multi-user.target
[Service]
ExecStart=/opt/sga/tools/test_service_start.sh
ExecStop=/opt/sga/tools/test_stop.sh
[Install]
WantedBy=default.target
systemctl -l status test.service を実行すると、次のコマンド出力が表示されます。
● test.service - test_Operations
Loaded: loaded (/etc/systemd/system/test.service; enabled; vendor preset: disabled)
Active: inactive (dead)
再起動後に「journalctl -u test.service -b」を実行した場合:
- No entries
誰が私を助けることができますか?
答え1
システムバスを使用する場合、通常は次のものを使用します。
[Install]
WantedBy=multi-user.target
システムによって、またはdefault.target
にエイリアス(シンボルリンク)が割り当てられます。私のシステムでは、次へのdefault.targetシンボリックリンクを見ることができます。multi-user.target
graphical.target
graphical.target
$ systemctl status default.target
● graphical.target - Graphical Interface
Loaded: loaded (/lib/systemd/system/graphical.target; static)
Active: active since Wed 2021-03-17 07:44:06 CET; 6h ago
Docs: man:systemd.special(7)
graphical.target
ちょっと変です。ジョブを実行するためにグラフィカル環境が必要な場合は、通常、システムバスの代わりにユーザーバスを使用する必要があるためです。それ以外の場合、設定XAUTHORITY
と設定を同時にしないと問題が発生します。DISPLAY
2つのオプションがあります。
WantedBy=multi-user.target
アプリケーションにグラフィック環境が必要ない場合に使用します。ファイルを編集する前に実行してsudo systemctl disable test.service
シンボリックリンクを削除し、ファイルを編集しますsudo systemctl daemon-reload && sudo systemctl enable test.service
。そのままにし
WantedBy=default.target
てもグラフィック環境が必要な場合は、サービスをユーザーバスに移動してください。ユーザーバスの別のオプションはですgraphical-session.target
。しかし、まだDEでは実装されていないので、これはよりよく合うように聞こえますが、選択する前にシステムで発生していることを確認してください。