
私は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=