一、创建frps.sh脚本

#!/bin/bash

if [ ! $1 ]; then
    echo '缺乏参数:restart|start|stop|status 中的任何一个'
    exit 1
fi

getFrpPID () {
  frpPID=$(netstat -nlp | grep frp | awk '{print $7}' | awk -F "/" '{print $1}' | awk '!a[$0]++{print $0}')
  return $frpPID
}

# 停止Frp进程
stopFrp () {
    frpPID=$(netstat -nlp | grep frp | awk '{print $7}' | awk -F "/" '{print $1}' | awk '!a[$0]++{print $0}')
    if [ ! "$frpPID" ]; then
        echo '当前无Frp内网穿透程序运行'
    else
        kill -9 "$frpPID"
        echo "关闭Frp内网穿透进程【$frpPID】"
    fi
}

# 启动Frp进程
startFrp () {
    if [ ! -d "/www/server/frp/frp_0.38.0_linux_386" ]; then
      echo '缺乏目录:/www/server/frp/frp_0.38.0_linux_386'
      exit 1
    fi
    frpPID=$(netstat -nlp | grep frp | awk '{print $7}' | awk -F "/" '{print $1}' | awk '!a[$0]++{print $0}')
    if [ !  $frpPID ]; then
   	 # 进入frp目录
	 cd /www/server/frp/frp_0.38.0_linux_386
	 # 守护进程运行frp
	 nohup ./frps -c ./frps.ini > nohup.out 2>&1 &
         echo '=====启动中,耐心等待====='
    	 sleep 4s
	 statusFrp
    else
         echo "当前已存有Frp【$frpPID】内网穿透进程,如果想重启请使用restart参数"
    fi
}

statusFrp () {
    frpPID=$(netstat -nlp | grep frp | awk '{print $7}' | awk -F "/" '{print $1}' | awk '!a[$0]++{print $0}')
    if [ ! $frpPID ]; then
        echo '当前无Frp内网穿透程序运行'
    else
        echo "Frp内网穿透程序正在进行中:进程PID【$frpPID】"
    fi
}


case $1 in
start)
    startFrp
    ;;
stop)
    stopFrp
    ;;
restart)
    stopFrp
    startFrp
    ;;
status)
    statusFrp
    ;;
*)
    echo '参数错误:请输入参数restart|start|stop|status 中的任何一个'
esac


二、使用

# 启动
sh frps.sh start
# 停止
sh frps.sh stop
# 重启
sh frps.sh restart
# 查看运行状态
sh frps.sh status


来源:https://www.csdn.net/tags/OtDaYgxsMjkzMzgtYmxvZwO0O0OO0O0O.html