サービスを自動的に開始する機能をプロジェクトに追加したいと思います。
私のサービスファイルには以下が含まれます。
[Unit]
Description=example Server
After=network.target
[Service]
Type=idle
ExecStart=/opt/xxx/xxx/sample.sh
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
私が従ったステップは次のとおりです。
デーモンを再ロードします。
systemctl daemon-reload
サービスを有効にする:
systemctl enable sample
サービスを開始します。
systemctl start sample
ヘルスチェック:
service sample status
、私のサービスが実行されていることを示します...
サービスがクラッシュまたは停止したら、自動的にサービスを開始したいと思います。
停止サービスを使用するとsystemctl stop sample
自動的に起動しません。これを達成する方法についてのアイデアはありますか?
答え1
これは設定Restart
が機能する方法ではありません。手動、
システム操作(サービスの停止または再起動など)によってプロセスが終了した場合、サービスは再起動されません。
systemctl
サービスが希望する状態を指定できます。つまり、systemctl start
サービスを実行することを指定するか、systemctl stop
実行しないことを指定します。その後、Systemdは要求された状態と一致するシステム状態を取得するために必要なアクションを実行します。
その目的Restart
は要求されたシステム状態を維持することであり、すべての状況でサービスを実行し続けることではありません。
サービスが終了した場合、systemdがサービスを再起動することを確認するには、次のものが必要です。サービスメインプロセスを直接終了します。、systemdに停止を要求せずに、次のことを行います。
systemctl kill sample