FreeBSD使用deamon將frpc新增到開始啟動項

myskies發表於2023-05-17

FreeBSD最大的特點就是穩,讓你難以置信的穩。提到FreeBSD,還需要感謝帶我認識它的劉仕臣老師。

frpc預設情況下會隨著shell的退出而自動終止,而且我們也希望在伺服器啟動時能夠自動啟動frpc服務,以及在frpc發生錯誤時,伺服器能夠自動重啟該服務。

步驟如下:

下載frpc

下載frpc並將相關的配置項寫入frpc.ini中,然後我們將frpcfrpc.ini一併上傳到FreeBSD伺服器。其實這個位置不重要,只需要保證frpc可執行以及frpc.ini可讀即可。

比如我上傳到了:/usr/local/opt/frp_0.48.0_freebsd_amd64

建立啟動指令碼

切換到root使用者,並建立/etc/rc.d/frpc檔案:$ ee /etc/rc.d/frpc,然後粘入以下內容:

#!/bin/sh
 
# PROVIDE: frpc
# REQUIRE: LOGIN
# KEYWORD: frpc
 
. /etc/rc.subr
 
name="frpc"
rcvar=frpc_enable
 
load_rc_config $name
 
: ${frpc_enable="NO"}
: ${frpc_user="nobody"}
: ${frpc_flags="-c /usr/local/opt/frp_0.48.0_freebsd_amd64/frpc.ini"}

daemon_pidfile="var/run/frpc_daemon.pid" 
pidfile="/var/run/frpc.pid"
command="/usr/local/opt/frp_0.48.0_freebsd_amd64/frpc"
start_cmd="/usr/sbin/daemon -r -R 5 -u $frpc_user -P $daemon_pidfile -p $pidfile -t $name $command $frpc_flags"
start_postcmd="${name}_poststart"
stop_cmd="${name}_stop"

frpc_poststart()
{
    echo "${name}_daemon running pid `cat ${daemon_pidfile}`."
    echo "${name} running pid `cat ${pidfile}`."
}

frpc_stop()
{
    if [ -f "$daemon_pidfile" ]; then
        pid=`cat $daemon_pidfile`
        echo "Stopping pid ${pid}."
        kill $pid
    else
        echo "${name} not running?"
    fi
}

 
run_rc_command "$1"

儲存後為其新增執行許可權:$ chmod +x /etc/rc.d/frpc

啟動指令碼

最後我們編輯etc/rc.conf,並向其最後一行新增:frpc_enable="YES"。接下來便可以使用:service frpc start來啟動frpc了,而且當FreeBSD下次重啟時,也會自動地啟動frpc

參考:Frp 在 FreeBSD 上的啟動與程式守護指令碼

相關文章