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 @ 2022-09-08 11:27  王东力  阅读(2445)  评论(0)    收藏  举报