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这个命令 具体命令取决于你设置的服务名称

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。