这几周在研究安卓手机的Linux Deploy和FRP内网穿透,每次启动关闭重启都要手动执行一些命令,于是想到用shell脚本去控制,稍稍研究了下,写了几个脚本,这里做下记录,以Frpc进程为例,假设Frp编译后的文件夹路径为/home/user/frp
start.sh
1 2 3 4 5 6 7 8 9 10 11
| NAME=frpc NAME_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
1 2 3 4 5 6 7 8 9 10 11
| NAME=frpc NAME_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
1 2 3 4 5 6 7 8 9 10 11 12 13
| NAME=frpc NAME_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