soarli

告别终端卡死!FRP 内网穿透后台运行与开机自启全攻略
在使用 FRP(Fast Reverse Proxy)进行内网穿透时,很多新手都会遇到一个痛点:直接在终端输入 ....
扫描右侧二维码阅读全文
13
2026/03

告别终端卡死!FRP 内网穿透后台运行与开机自启全攻略

在使用 FRP(Fast Reverse Proxy)进行内网穿透时,很多新手都会遇到一个痛点:直接在终端输入 ./frpc -c ./frpc.toml 启动后,终端窗口就被“霸占”了。一旦关闭 SSH 连接或关掉终端,FRP 服务也就跟着断开了。

为了让 FRP 能够稳定、持久地为我们服务,我们需要让它在后台运行,并且配置开机自启。本文将为你介绍两种最常用的方法:简单粗暴的 Shell 脚本法,以及现代 Linux 系统最推荐的 Systemd 服务法

环境说明: > 本文假设你的 FRP 核心文件(frps, frpc)和配置文件(frps.toml, frpc.toml)都存放在 /etc/frp/ 目录下。如果你的路径不同,请在代码中自行替换。


方法一:简单直接的 Shell 脚本法(适合快速测试)

如果你不想接触太复杂的系统配置,可以使用 Linux 自带的 nohup 命令配合 Shell 脚本。nohup 的作用是不挂断地运行命令,即使你退出了终端账户,程序依然能在后台坚挺。

1. 编写服务端 (frps) 启动脚本

/etc/frp/ 目录下创建一个名为 start_frps.sh 的文件,填入以下内容:

#!/bin/bash
# 进入 frp 所在目录
cd /etc/frp

# 赋予 frps 执行权限(防止因权限不足报错)
if [ ! -x "./frps" ]; then
  chmod +x ./frps
fi

# 使用 nohup 在后台启动 frps,并将日志重定向到 frps.log
nohup ./frps -c ./frps.toml > frps.log 2>&1 &

echo "✅ FRP 服务端 (frps) 已在后台启动,日志请查看 /etc/frp/frps.log"

2. 编写客户端 (frpc) 启动脚本

同理,创建 start_frpc.sh 文件:

#!/bin/bash
cd /etc/frp

if [ ! -x "./frpc" ]; then
  chmod +x ./frpc
fi

nohup ./frpc -c ./frpc.toml > frpc.log 2>&1 &

echo "✅ FRP 客户端 (frpc) 已在后台启动,日志请查看 /etc/frp/frpc.log"

3. 如何使用?

给这两个脚本赋予执行权限,然后直接运行即可:

# 赋予执行权限
chmod +x /etc/frp/start_frps.sh
chmod +x /etc/frp/start_frpc.sh

# 启动服务端
./start_frps.sh

# 启动客户端
./start_frpc.sh

方法二:优雅且专业的 Systemd 法(🔥 强烈推荐!)

虽然脚本法很简单,但在生产环境中,我们强烈推荐使用 Systemd
为什么?因为 Systemd 拥有进程守护功能——如果你不小心杀死了 FRP 进程,或者程序意外崩溃,Systemd 会自动帮你重启它!而且它是目前主流 Linux 发行版管理开机自启的标准做法。

1. 配置服务端 (frps) 开机自启

使用 vim 或 nano 创建服务配置文件:

sudo vim /etc/systemd/system/frps.service

将以下内容粘贴进去:

[Unit]
Description=FRP Server Service
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=simple
# 核心:进程崩溃后自动重启,间隔5秒
Restart=on-failure
RestartSec=5s
# 指向你的程序和配置文件绝对路径
ExecStart=/etc/frp/frps -c /etc/frp/frps.toml

[Install]
WantedBy=multi-user.target

2. 配置客户端 (frpc) 开机自启

如果你是在内网机器上配置客户端,创建对应的客户端服务文件:

sudo vim /etc/systemd/system/frpc.service

粘贴以下内容:

[Unit]
Description=FRP Client Service
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/etc/frp/frpc -c /etc/frp/frpc.toml

[Install]
WantedBy=multi-user.target

3. 启动并启用服务(关键步骤)

配置文件写好后,需要让 Systemd 重新加载配置,并启动服务。在终端执行以下命令:

# 1. 重新加载 Systemd 配置
sudo systemctl daemon-reload

# ==============================
# 如果你配置的是服务端 (frps):
# ==============================
sudo systemctl enable frps   # 设置开机自启
sudo systemctl start frps    # 立即启动服务
sudo systemctl status frps   # 查看运行状态是否为 active (running)

# ==============================
# 如果你配置的是客户端 (frpc):
# ==============================
sudo systemctl enable frpc   # 设置开机自启
sudo systemctl start frpc    # 立即启动服务
sudo systemctl status frpc   # 查看运行状态是否为 active (running)

💡 避坑指南(Pro Tips)

  1. 认清自己的角色:一台机器通常只需要运行 frps(公网拥有独立 IP 的服务器)或者 frpc(家里的 NAS、内网电脑)。不要在同一台机器上把两个服务都开启了。
  2. 权限问题:无论使用哪种方法,确保 /etc/frp/frps/etc/frp/frpc 二进制文件具有可执行权限(chmod +x)。
  3. 防火墙放行:服务端启动后,别忘了在云服务器的安全组或宝塔面板/UFW防火墙中,放行 FRP 使用到的端口(如 7000 以及你需要穿透的业务端口)。

希望这篇文章能帮你彻底解决 FRP 后台运行和开机自启的问题,畅享丝滑的内网穿透体验!

最后修改:2026 年 03 月 15 日 01 : 50 AM

发表评论