systemdサービスを再起動する方法に関する混乱

systemdサービスを再起動する方法に関する混乱

私はsystemdサービスが有効になっているのか、プロセスがまだ実行されているのか、実行していないのかなどについてまだ混乱しています。

my_script.shという次の基本的なシェルスクリプトがあるとしましょう。

#!/bin/sh
touch /my_dir/my_file.txt
echo "Hello from my_script.sh" >> /my_dir/my_file.txt

次のように my_script.sh を呼び出す my_service.service というシステムサービスがあります。

[Unit]
Description=my service 

[Service]
Type=simple
ExecStart=sh /my_dir/my_script.sh
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

実際には、Restart=alwaysこれはシェルスクリプトの実行が完了したら実行され続け、ファイルに継続的に書き込む必要があることを意味しますか?

私の理解は、を使用すると、Restart=always新しく終了してもサービスが再起動されることです。私はこの言葉をよく理解していません。 my_script.shは実行後に完全に終了しますか?

RemainAfterExit=yes、私の場合、この行を定義または定義しないとどうなりますか?

疑問を解いてくれてありがとう。

ベストアンサー1

この行は、スクリプトが正常な終了コードで終了すると、RemainAfterExit=yesサービスがアクティブとして表示されることを意味します。ExecStart

この行は、Restart=always次のイベントが発生するたびに再起動することを意味します。

  • 終了コードまたは信号の消去
  • 不潔な終了コード
  • 信号がきれいではありません。
  • 停止する
  • 守る犬

特定の終了コードでサービスを再起動する必要がない場合は、このオプションを選択してください。 RestartPreventExitStatus=

systemd.service の詳細は次のとおりです。

おすすめ記事