如何在 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

在 FreeBSD 的更高版本中,您可以指定指定-R <delay in seconds>重新啟動進程之前等待的時間。

若要在重新啟動後啟動該進程,請在定時任務(5)像這樣的文件:

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

若要編輯 crontab 文件,請使用

$ crontab -e

答案3

如前所述,<service>_enable=YESin /etc/rc.conf(或相關rc.conf.d文件)將在啟動時啟動服務。

為了在崩潰時重新啟動,規範的方法包括守護程式工具

答案4

您可以每兩分鐘(例如)向 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

相關內容