指定时间更新服务需要使用at命令
at -f update.sh -v 18:00
更新脚本内容
#!/bin/bash
#source /etc/profile
#先进入目标目录
cd /opt/zjmsaService/zjmsaEnforce/
#判断是否已上传更新文件
updateFile=./zjmsaenf_prov1.jar
if [ ! -e $updateFile ]
then
echo "未上传更新文件!"
else
#更新文件存在时才进行更新
#通过时间戳创建备份文件夹
echo "准备备份..."
updateTime=$(date '+%Y%m%d%H%M%S')
mkdir ./backup/$updateTime
cp ./zjmsaenf_prov.jar ./backup/$updateTime
#找到进程PID后重启服务
echo "停止服务..."
pid=`ps -ef | grep zjmsaenf_prov.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
echo "启动服务..."
rm -rf ./zjmsaenf_prov.jar
mv ./zjmsaenf_prov1.jar ./zjmsaenf_prov.jar
nohup /opt/grid/jdk1.8.0_25/bin/java -server -Xms1024m -Xmx2048m -XX:MaxPermSize=512m -jar ./zjmsaenf_prov.jar &
sleep 3
tail -f ./nohup.out
fi
需要注意的是上面这个脚本在linux上执行时可能会报错,需要在linux上vim文件后设定文本格式
set fileformat=unix
at命令,最后执行如果失败可以在邮件中查看
列清单
atq
查看作业内容
at -c 作业号
删除作业
atrm 作业号