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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现