Linux定义脚本自启服务历程

Linux定义脚本自启服务历程

全部脚本内容

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
su - testShell -c 'nohup java -jar /home/csdn/csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &'
rm -rf /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服务启动情况" >> /home/start.log
sleep 60;
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服务启动情况" >> /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: netstat -tunlp|grep 18080" >> /home/start.log
echo "`netstat -tunlp|grep 18080`" >> /home/start.log

启动服务

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
cd /home/csdn
nohup java -jar csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &

首先进入对应jar包所在目录,运行相关命令,但是发现脚本无法识别java,所以手动增加了JAVA_HOMEPATH。成功运行。

增加日志

为了防止有部分服务启动失败,却无法得知,所以增加日志文件。通过查看端口是否被占用判断是否正常运行。
所以增加命令echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服务启动情况" > /home/start.log
但是每次都有一行文字,且tail -f /home/start.log会有tail: /home/start.log: file truncated这种报错,百度后发现echo命令后面的>一个是覆盖,相当于删除后在写入。两个则是才是追加。
又因为服务启动需要时间,防止出现服务正在启动,而日志已经写入,加入沉睡时间。

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
nohup java -jar /home/csdn/csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &
rm -rf /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服务启动情况" >> /home/start.log
sleep 60;
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服务启动情况" >> /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: netstat -tunlp|grep 18080" >> /home/start.log
echo "`netstat -tunlp|grep 18080`" >> /home/start.log

切换别的用户运行命令

有的时候服务需要使用特定的用户启动,那么这个时候则需要切换用户运行。加入su命令。
su - 用户名 -c '命令内容',注意-用户名之间一定要有空格。
如果切换用户时需要输入密码,则需要使用expect命令。expect命令详解
最终命令如下:

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
su - testShell -c 'nohup java -jar /home/csdn/csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &'
rm -rf /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服务启动情况" >> /home/start.log
sleep 60;
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服务启动情况" >> /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: netstat -tunlp|grep 18080" >> /home/start.log
echo "`netstat -tunlp|grep 18080`" >> /home/start.log

接收start、stop、status等参数

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
case $1 in
          start) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh start;;
          stop) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh stop;;
          status) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh status;;
          restart) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh restart;;
          *)  echo "require start|stop|status|restart"  ;;
esac
发布了26 篇原创文章 · 获赞 1 · 访问量 6965

猜你喜欢

转载自blog.csdn.net/qq_39800434/article/details/101017459