简介
在/usr/local/jar 目录存放jar包和启动脚本,复制脚本先按日期创建目录,然后将jar包和启动脚本复制到日期目录并启动服务
复制脚本start-cms.sh
#!/bin/bash
# 打包成jar包时的名字
service_name='my-cms'
jar_name=${service_name}'.jar'
# jar包存放目录
jar_source_dir='/usr/local/jar/'
# 启动目录,这个目录下面创建日期文件夹
jar_destination='/usr/local/cms/'
# 服务启动脚本
sh_name='cms-pro.sh'
cur_date=$(date "+%Y-%m-%d")
jar_source=${jar_source_dir}${jar_name}
sh_source=${jar_source_dir}${sh_name}
info_txt=${jar_source_dir}${service_name}'.txt'
echo '今天日期'$cur_date
cd $jar_destination
# 统计当前文件夹下当前日期目录的个数
dir_num=`find $jar_destination -maxdepth 1 -type d -name ${cur_date}\* |wc -l`
echo ${cur_date}'文件数量'${dir_num}
dir=${cur_date}'_'${dir_num}
echo '创建文件夹'$dir
sudo mkdir $dir
cd $dir
sudo cp ${jar_source} ${jar_name}
sudo cp ${sh_source} ${sh_name}
sudo sh ${sh_name}
echo "============================= 所在目录 =============================" > ${info_txt}
echo 'cd '${jar_destination}${dir} >> ${info_txt}
sleep 2
# log 所在目录
info_log=${jar_destination}${dir}'/logs/info-latest.log'
echo "============================= log文件 =============================" >> ${info_txt}
echo 'less '${info_log} >> ${info_txt}
echo "============================= ============================="
tail -f ${info_log}
服务启动脚本cms-pro.sh
#!/bin/bash
env='pro2'
service_name="my-cms"
jar=${service_name}".jar"
log=${service_name}"_start.log"
cur_time=`date +%Y-%m-%d/%H:%M:%S`
PID=$(ps -ef|grep $jar|grep -v grep|awk '{print $2}')
echo start:=====================$cur_time====================== >> $log
if [ -n "$PID" ]; then
echo exists:$PID >> $log
ls -l /proc/$PID/cwd >> $log
kill -9 $PID
echo kill $PID successful >> $log
else
echo jar is not running >> $log
fi
nohup java -jar $jar --spring.profiles.active=${env} \
-Xms2048m \
-Xmx2048m \
-Xss256k \
-XX:MaxDirectMemorySize=256m \
-XX:+UseG1GC \
-XX:+UseCompressedOops \
-XX:+UseCompressedClassPointers \
-XX:+SegmentedCodeCache \
-verbose:gc \
-XX:+PrintCommandLineFlags \
-XX:+ExplicitGCInvokesConcurrent \
-XX:+PrintGCDetails \
-Djava.security.egd=file:/dev/./urandom \
-Xlog:gc*,safepoint:/data/log/$service_name/gc.log:time,uptime:filecount=1000,filesize=300M > /dev/null 2> nohup.out &
# -Xlog:gc*,safepoint:/data/log/$service_name/gc.log:time,uptime:filecount=1000,filesize=300M > nohup.out 2>&1&
echo end:=======================$cur_time====================== >> $log
echo success,start detail in $log
# Xms 堆内存的最小Heap值,默认为物理内存的1/64,但小于1G。 Xmx 堆内存的最大Heap值,默认为物理内存的1/4。官方建议两值相等