FreeBsd 11 でクラッシュまたは再起動後にプロセスを自動的に再起動するにはどうすればよいですか?

FreeBsd 11 でクラッシュまたは再起動後にプロセスを自動的に再起動するにはどうすればよいですか?

慣用的な方法は何でしょうか? 追加の依存関係が少なく、最も標準的でありながらシンプルな方法をお勧めします。Linux の systemd の代替のようなものです。

答え1

インストールされたプロセスは、以下を追加することで自動的に再起動できます。/etc/rc.conf

yourprocess_enable="YES"

Linux ユーザーのための FreeBSD システムの起動

しかし、それはスタートアップスクリプトがあることを前提としています/usr/local/etc/rc.d/

FreeBSD ハンドブック - サービスの開始

答え2

プロセス用のrc.dスクリプトがまだない場合は、次のようにすれば簡単に目的の結果を得ることができます。デーモン(8)コマンド。このコマンドはバックグラウンドで子プロセスを実行し、コマンドラインオプションを使用すると-r、子プロセスが終了した場合に再起動することができます。

$ daemon -r /some/path/to/command

-R <delay in seconds>FreeBSD の以降のバージョンでは、プロセスを再起動するまでに待機する時間を指定できます。

再起動後にプロセスを開始するには、crontab(5)次のようなファイルです:

@reboot daemon -r /some/path/to/command

crontabファイルを編集するには、

$ crontab -e

答え3

前述のように、(または関連ファイル)<service>_enable=YESは起動時にサービスを開始します。/etc/rc.confrc.conf.d

クラッシュ時に再起動する場合、標準的な方法は次のようになります。デーモンツール

答え4

次のように、2 分ごとに cron にスクリプトを追加できます。

#!/bin/sh

process = 'my-secret-service' # process name

if ps ax | grep -v grep | grep $process
then
    echo "$process is alive."
else
    echo "$process is dead, but will be launched."
/usr/local/bin/my-secret-service #launch command

fi

関連情報