Ryan Shang

生死看淡,不服就干

0%

Linux任务脚本

这几周在研究安卓手机的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

现在还有几个问题需要后面关注下:

  1. awk后面参数,如果是双引号,则会又问题,单引号和双引号应该是有区别的,需要关注下有区别的原因
  2. 三个脚本其实包含大量重复内容,后面考虑合成一个脚本,利用参数方式区分执行命令
  3. 需要了解下Linux中比较常见的几个服务管理工具,了解下原理,例如service command