linux开机自启动frp

最近有一些项目需要远程调试的需求,在网上找到了一个远程工具frp,github链接如下:

https://github.com/fatedier/frp

frp为内网穿透的开源项目,为C/S架构,需要将ftp server架设在带有公网ip的server上(现在各云厂商的VM也不贵,可以考虑),在被控电脑上运行frp client。下面讲如何将frp client用systemctl管理起来,做到自动开机启动。

自定义脚本

  1. 自定义启动脚本frp_start.sh:后台运行frp client
    #!/bin/bash
    path=/home/moxa/code/frp/frp_0.44.0_linux_amd64
    nohup $path/frpc -c $path/frpc.ini > $path/frpc.log 2>&1 &

     

  2. 自定义重启脚本frp_reload.sh(optional:考虑到程序稳定程度,这里自定义重启脚本,后续可以使用cron做定时重启的动作,一定程度上保证远程不到的概率)
    复制代码
     1 #!/bin/bash
     2 
     3 path=/home/moxa/code/frp/custom_shell
     4 frpc_pid=`ps -ef | grep frpc.ini | grep color -v | grep grep -v | awk '{print $2}'`
     5 #echo $frpc_pid
     6 
     7 if [ -n "$frpc_pid" ]; then
     8     kill -9 $frpc_pid;
     9 fi
    10 sh $path/frpc_start.sh
    复制代码

    第4行:筛选出frp client的PID,以便下一步杀死此进程 

  3. 自定义停止脚本frp_stop.sh(optional,支持systemctl stop命令)
    1 #!/bin/bash
    2 
    3 frpc_pid=`ps -ef | grep frpc.ini | grep color -v | grep grep -v | awk '{print $2}'`
    4 #echo $frpc_pid
    5 
    6 if [ -n "$frpc_pid" ]; then
    7     kill -9 $frpc_pid
    8 fi

     

编辑systemctl相关文件

在/etc/systemd/system目录下创建frpc.service文件

复制代码
 1 [Unit]
 2 Description=frp client
 3 ConditionFileIsExecutable=/home/moxa/code/frp/custom_shell/frpc_start.sh
 4 After=mutli-user.target
 5 
 6 
 7 [Service]
 8 Type=forking
 9 ExecStart=/home/moxa/code/frp/custom_shell/frpc_start.sh
10 ExecReload=/home/moxa/code/frp/custom_shell/frpc_reload.sh
11 ExecStop=/home/moxa/code/frp/custom_shell/frpc_stop.sh
12 User=root
13 
14 [Install]
15 WantedBy=multi-user.target
复制代码

 

line8:type要设定成forking,大概意思是为frpc新创建一个进程,这样就不会在运行脚本的主进程推出后,frpc意外退出。

line12:user设定成root,意思为root权限运行,防止出现权限问题

加入开机自启动:systemctl enable frpc

重新载入命令:systemctl daemon-reload

查看frpc服务命令:systemctl status frpc

开始/重启/停止命令:systemctl start/reload/stop frpc

 

posted @   王东力  阅读(2194)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示