同様のサービスのインスタンスを簡単に作成できるsystemdテンプレートを正常に作成および構成しました。
テンプレートは次のとおりです。
[Unit]
Description=my awesome service %I
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/binary -c /path/to/config/%i.conf
ExecStop=/usr/bin/pkill --full %i
Restart=on-failure
User=root
Group=root
TimeoutSec=30
[Install]
WantedBy=multi-user.target
systemcl の有効化 name@kkk, systemctl start name@kkk を使用してインスタンスをアクティブ化して起動しましたが、/path/to/config/kkk.conf ファイルが生成されなかったため、サービスが失敗しました。
~# systemctl status [email protected]
● [email protected] - my awesome service kkk
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Wed 2017-10-04 15:20:09 CEST; 3min 27s ago
Process: 30116 ExecStop=/usr/bin/pkill --full %i (code=exited, status=1/FAILURE)
Process: 30113 ExecStart=/usr/local/bin/binary -c /path/to/config/kkk.conf (code=exited, status=1/FA
Main PID: 30113 (code=exited, status=1/FAILURE)
Oct 04 15:20:08 host systemd[1]: [email protected]: Unit entered failed state.
Oct 04 15:20:08 host systemd[1]: [email protected]: Failed with result 'exit-code'.
Oct 04 15:20:09 host systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Oct 04 15:20:09 host systemd[1]: Stopped my awesome service for kkk.
systemctl --failed を実行すると、次の結果が表示されます。
0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
サービスが失敗したため、これは明らかに間違っています。私は何か間違っているか、ここで何かを見逃していますか?ティア。
ベストアンサー1
これは、再起動に失敗したサービスが「失敗」ではなく「非アクティブ」と表示されるsystemdのバグです。私のテストでは、229(Ubuntu Xenialのデフォルト)として登場し、238に修正されました。一部の変更ログをスヌーピングすると、どのバージョンが変更されたかがわかります。
Restart
最善の解決策は、サービスファイルから削除して手動で再起動するようです。