Linux定义脚本自启服务历程
程序员文章站
2022-04-10 14:49:32
...
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_HOME
和PATH
。成功运行。
增加日志
为了防止有部分服务启动失败,却无法得知,所以增加日志文件。通过查看端口是否被占用判断是否正常运行。
所以增加命令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