banner
xingli

xingli

猫娘爱好者

設置frp開機自啟

設置 frp 開機自啟 linux#

首先寫一個 sh 腳本,例子:

[Unit]

Description=frps daemon

  

[Service]

Type=simple

#此處把/root/frp_linux_arm64替換成 你的frps的實際安裝目錄

ExecStart=/opt/module/frpc/frpc -c /opt/module/frpc/frpc.ini

  

[Install]

WantedBy=multi-user.target

新建服務文件#

  1. 登錄伺服器,輸入sudo vim /lib/systemd/system/frps.service 其實就是在 root/lib/systemd/system 下面新建一個文件 frps.service

  2. 在文件裡面寫入腳本內容,就是上方我給的例子
    寫完保存退出後服務就可用了

  3. 然後就啟動 frps sudo systemctl start frps

  4. 再打開自啟動 sudo systemctl enable frps

其他的設置

  • 重啟應用 sudo systemctl restart frps
  • 停止應用 sudo systemctl stop frps
  • 查看日誌 sudo systemctl status frps

額外配置#

經過測試我發現,在 linux 系統重啟並啟動 frp 的開機腳本時,它並沒辦法啟動,會遇到網絡錯誤無法連接伺服器然後報錯的狀態,需要手動重啟服務。

解決方案,寫一個 sh 腳本#

可以通過寫一個 sh 腳本 ping 一個地址 ping 通後重新執行服務啟動腳本
您可以使用 sleep 命令來暫停腳本執行一段時間,等待網絡準備就緒。具體來說,您可以在腳本中添加類似如下的代碼:

#!/bin/bash

# 暫停腳本執行 10 秒鐘
sleep 10

# 在這裡寫下您需要執行的命令,等待 10 秒鐘再執行。

在上述代碼中,sleep 命令後面的數字表示需要暫停執行的時間(單位為秒),您可以根據您的實際情況酌情調整。

另外,您可以使用一些網絡命令(如 ping)來測試網絡連接是否可用,並在網絡連接可用後再執行您需要執行的命令。例如:

#!/bin/bash

# 每隔 3 秒鐘 ping 一次目標地址 目標地址可以替換為你frp伺服器的ip地址
while ! ping -c1 -w1 "目標地址" &>/dev/null
do
  sleep 3
done

# 在目標地址可用時執行下面的命令

在上述代碼中,while 循環中的 ping 命令每隔 3 秒鐘嘗試 ping 一次目標地址,直到能夠成功 ping 通為止,然後退出循環,並開始執行下面的命令。

#!/bin/bash

while ! ping -c1 -w1 "4x.1x8.2x0.xx" &>/dev/null
do
  sleep 3
done

systemctl start frpc.service # 這裡寫啟動你上方設置的服務的啟動代碼

在上述代碼中,.service 文件定義了服務的配置,ExecStart 指定了啟動服務時需要執行的命令,Restart 制定了服務失敗時需要自動重啟,WantedBy 指定了在哪些系統級別中需要自動啟動該服務。

.sh 文件則定義了等待網絡連接的腳本。在這裡,while 循環通過 ping 命令測試了指定的 IP 地址是否可以訪問。如果無法訪問,則暫停 3 秒後重新嘗試。當可以訪問時,就啟動 .service 文件中定義的服務。

注意,為了使 .sh 文件可以在系統啟動時自動運行,您需要將其設置為啟動腳本並添加到 /etc/rc.local 等文件中。例如,在 /etc/rc.local 文件中添加以下內容,就可以在系統啟動時自動啟動該腳本:
/path/to/wait-for-network.sh &
在上述代碼中,/path/to/wait-for-network.sh 應替換為您實際存放 .sh 文件的路徑。& 符號用於讓該腳本以後台進程的方式啟動。
假設你的腳本在/opt/module/frpc/start.sh下使用以下代碼
bash /opt/module/frpc/start.sh &

設置開機啟動#

您可以通過以下步驟將 /opt/module/frpc/start.sh 設置為開機自啟動腳本:

  1. 使用以下命令編輯 /etc/rc.local 文件:
    sudo vim /etc/rc.local
    注意,如果您使用的是 Ubuntu 20.04 或 Debian 11 等較新的系統版本,則 /etc/rc.local 文件可能已被禁用。在這種情況下,您需要創建一個 systemd 服務單元。

  2. 在文件的末尾添加以下行:
    bash /opt/module/frpc/start.sh &
    上述命令的含義是在後台運行 /opt/module/frpc/start.sh 腳本。
    image

  3. 保存並關閉 /etc/rc.local 文件。

  4. 確保 /opt/module/frpc/start.sh 腳本有執行權限。可以通過以下命令授予其執行權限:
    chmod +x /opt/module/frpc/start.sh

arch 系統#

對於 arch 系統你得這麼寫啟動 sh 腳本
sudo vim /lib/systemd/system/frp_start.service

[Unit]
Description=FRP服務啟動腳本 # 描述

[Service]
Type=simple
ExecStart=/bin/bash /sh腳本路徑/frp_start.sh

[Install]
WantedBy=multi-user.target

寫完這個系統服務後使用systemctl enable frp_start.service就可以了

現在,當您的系統啟動時,/opt/module/frpc/start.sh 腳本將自動運行。如果您發現它沒有按預期工作,請確保腳本中包含正確的啟動和配置命令,並檢查系統日誌以查看任何與腳本相關的錯誤消息。

我經過測試發現你需要將 frpc 的系統服務設置開機自啟動和 sh 腳本開機自啟全都配置好,frpc 啟動腳本才可以正常工作,否則會報錯或服務無法啟動。
所有記得執行 systemctl enable frps這個命令 具體命令取決於你設置的服務名稱

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。