这几周在研究安卓手机的Linux Deploy和FRP内网穿透,每次启动关闭重启都要手动执行一些命令,于是想到用shell脚本去控制,稍稍研究了下,写了几个脚本,这里做下记录,以Frpc进程为例,假设Frp编译后的文件夹路径为/home/user/frp
start.sh
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | NAME=frpcNAME_OUT="${NAME^}"
 DIR=/home/user/frp
 PID=$(ps -e | grep $NAME | awk {'print $1'})
 if [[ $PID == "" ]]
 then
 nohup $DIR/$NAME -c $DIR/$NAME.ini > $DIR/nohup.out 2>&1 &
 echo "Start $NAME_OUT Success"
 else
 echo "$NAME_OUT is already running!"
 fi
 
 | 
stop.sh
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | NAME=frpcNAME_OUT="${NAME^}"
 DIR=/home/user/frp
 PID=$(ps -e | grep $NAME | awk {'print $1'})
 if [[ $PID == "" ]]
 then
 echo "$NAME_OUT is not running!"
 else
 sudo kill -9 $PID
 echo "Stop $NAME_OUT Success!"
 fi
 
 | 
restart.sh
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | NAME=frpcNAME_OUT="${NAME^}"
 DIR=/home/user/frp
 PID=$(ps -e | grep $NAME | awk {'print $1'})
 if [[ $PID == "" ]]
 then
 nohup $DIR/$NAME -c $DIR/$NAME.ini > $DIR/nohup.out 2>&1 &
 echo "Start $NAME_OUT Success!"
 else
 sudo kill -9 $PID
 nohup $DIR/$NAME -c $DIR/$NAME.ini > $DIR/nohup.out 2>&1 &
 echo "Restart $NAME_OUT Success!"
 fi
 
 | 
现在还有几个问题需要后面关注下:
- awk后面参数,如果是双引号,则会又问题,单引号和双引号应该是有区别的,需要关注下有区别的原因
- 三个脚本其实包含大量重复内容,后面考虑合成一个脚本,利用参数方式区分执行命令
- 需要了解下Linux中比较常见的几个服务管理工具,了解下原理,例如service command