linux开机自启动frp
最近有一些项目需要远程调试的需求,在网上找到了一个远程工具frp,github链接如下:
https://github.com/fatedier/frp
frp为内网穿透的开源项目,为C/S架构,需要将ftp server架设在带有公网ip的server上(现在各云厂商的VM也不贵,可以考虑),在被控电脑上运行frp client。下面讲如何将frp client用systemctl管理起来,做到自动开机启动。
自定义脚本
- 自定义启动脚本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 &
- 自定义重启脚本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,以便下一步杀死此进程
- 自定义停止脚本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
浙公网安备 33010602011771号