2017-05-02 4 views
0

に基づいてsytemdを使用してサービスを再起動する方法基本的に、私はちょうどにsystemdはそれがクラッシュしたときにのみ、特定の信号

を使用してinit.dディレクトリのモニターのものと同じ機能を実現したい私は、として実行されるサービスを持っていますデーモン。何らかの理由でサービスがクラッシュした場合は、システムを使用して再起動します。

私はこれに関連する他の質問と回答を行ったとき、そのサービスの単位で次のものを追加できることがわかりました。

Restart=always 
RestartSec=0 

ただし、クラッシュが発生した場合のみ再起動しますか?それとも殺されたとしても?

SIGTERM、SIGINT、SIGHUPなどの特定の信号に基づいて再起動する必要はありますか。

+0

スタックオーバーフローは、プログラミングおよび開発の質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[Super User](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 – jww

答えて

1

標準のドキュメントに従って、サービスの再起動の条件は、終了、終了、およびタイムアウト時に発生します。だから、あなたの質問に答えます。それがクラッシュすると、終了し、終了すると、はい、再開されます。

再起動=が殺害された、またはタイムアウトに達したとき サービスプロセスが終了すると、サービスが再起動されなければならないかどうかを設定します....

は、より多くの情報や詳細については、こちらをご覧( https://www.freedesktop.org/software/systemd/man/systemd.service.html

信号の送信については、信号処理手順に従います。

これは、システムのコントローラとエフェクトに関係なくです。信号を送信するときには、実際にシグナルをプロセス自体に送信することを考慮してください。それはsystemdプロセスにまったく到達しません。

0

再起動が再開します。それは簡単です。

再起動したくない場合は、systemctl stop foo.serviceがあります。

関連する問題