BLOGTIMES
2017/02/03

Systemd でサービスが落ちたときに自動的にサービスを再起動させる

  centos7  systemmanagemant  english 
このエントリーをはてなブックマークに追加

Linux で常に起動しておきたい(落ちては困る)デーモンがある場合には inittab を使ってプログラムを respawn にする設定しておくということができました。
例えば以下のような設定です。

/etc/inittab

999:2345:respawn:/path/to/app

この機能は SysVinit/Upstart で実現されていたわけですが、これが CentOS7 では Systemd に置き換わっているのでこの手は使えません。
これについて代替となるなにかいい手がないかなと Systemd マニュアルを眺めていたら systemd.service の部分にRestart= という定義ができることを発見しました。

設定出来る値は no(デフォルト), on-success, on-failure, on-abnormal, on-watchdog, on-abort, always の7種類。とりあえず respawn と同じ状態にしたいという場合には always と設定すれば良さそうです。
実際に .service ファイルに書く際には [Service] の中に記述する必要があります。

[Service] Restart=always

respawn はゲーム用語?

respawn という英単語は個人的に inittab 以外で出逢ったことがないのですが、英英辞典だと「殺された時に再出現すること」という意味のゲーム用語ということになっているようです。
サービスやプロセスも強制的に止めることは kill(殺す) と表現するのでこれはこれで適切なのでしょう。

respawn - definition of respawn in English | Oxford Dictionaries

(of a character in a video game) reappear after having been killed

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9123
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン