Spring Cloud项目启动脚本
方式一
#!/bin/bash source /etc/profile cd `dirname $0` BIN_DIR=`pwd` echo "$BIN_DIR" SERVER_NAME="aid-app-web" PROFILE=test PIDS=`ps -ef | grep java | grep "$SERVER_NAME" | grep -v "grep" |awk '{print $2}'` if [ -n "$PIDS" ]; then echo "kill $SERVER_NAME PID: $PIDS" kill -9 $PIDS fi echo "backup start " BAK_DIR="$BIN_DIR/bak" if [ ! -d $BAK_DIR ]; then mkdir $BAK_DIR fi date=`date +%Y%m%d%H%M` bakJarName=${SERVER_NAME}.jar cp $BIN_DIR/$bakJarName $BAK_DIR/$bakJarName.$date echo "backup success $BAK_DIR/$bakJarName.$date" LOGS_DIR="$BIN_DIR/logs" if [ ! -d $LOGS_DIR ]; then mkdir $LOGS_DIR fi TD=`date +'%Y%m%d'` STDOUT_FILE="$LOGS_DIR/stdout.log_$TD" TOMCAT_DIR="$BIN_DIR/tomcat" if [ ! -d $TOMCAT_DIR ]; then mkdir $TOMCAT_DIR fi JAVA_MEM_OPTS="" BITS=`java -version 2>&1 | grep -i 64-bit` if [ -n "$BITS" ]; then JAVA_MEM_OPTS=" -server -Xmx512m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -Djava.io.tmpdir=$TOMCAT_DIR " else JAVA_MEM_OPTS=" -server -Xms512m -Xmx512m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC " fi echo " Starting the $SERVER_NAME ..." # nohup java $JAVA_MEM_OPTS -Dprofile=$PROFILE -jar ${SERVER_NAME}.jar > $STDOUT_FILE 2>&1 & nohup java $JAVA_MEM_OPTS -Dspring.profiles.active=$PROFILE -jar ${SERVER_NAME}.jar > $STDOUT_FILE 2>&1 & echo "OK!" PIDS=`ps -ef | grep java | grep "$SERVER_NAME" | grep -v "grep" | awk '{print $2}'` echo "PID: $PIDS" echo "STDOUT: $STDOUT_FILE" #tail -f "$STDOUT_FILEe
方式二
/data/payemnt2/develop.sh
#!/bin/bash tag=$1 post=6061 service=payment2 jar_path=/data/${service}/$service.jar # 保存副本数 bak_count=10 set -e cd `dirname ${jar_path}` function isok() { if [ $? -ne 0];then return 1; fi } function upgrade () { if [ ! -d "bak" ];then mkdir bak fi cp -f ${jar_path} bak/${service}`date "+%F%H%M%S"`.jar /bin/bash /data/run_server.sh ${service} ${jar_path} ${post} stop #mv `echo $jar_path | sed -nE 's@.*/(.*).jar@\1@p'`-${tag}.jar ${jar_path} -f mv ${tag} ${jar_path} -f chmod u+x ${jar_path} chown www.www ./ -R /bin/bash /data/run_server.sh ${service} ${jar_path} ${post} restart #isok } function rollbak () { tag=`ls -lr bak/ | grep jar |head -1 |awk '{print $9}'` if [ -z $tag ];then echo "未发现副本,请重新执行部署" exit else cp bak/${tag} ${jar_path} -f /bin/bash /data/run_server.sh ${service} ${jar_path} ${post} restart #isok fi } function rm_bak () { bak_count=$1 count=`ls -l bak/*.jar | wc -l` if [ ${count} -gt ${bak_count} ];then n=$(expr ${count} - ${bak_count}) # 需要删除的文件数 for f in $(ls -lrt bak/*.jar|head -$n|awk '{print $9}');do rm -f ${f} done echo "备份删除完毕" else echo "没有需要删除的备份" fi } if [ $tag == rollbak ];then # 回滚 rollbak else # 部署 upgrade fi rm_bak ${bak_count}
/data/run_server.sh
#!/bin/bash SERVER=$1 JAR_PATH=$2 POST=$3 function isRuning(){ PID=`ps -ef | grep $JAR_PATH | grep java | grep -v grep | awk '{print $2}'` if [ -z "${PID}" ] then return 1 else echo "${PID}" if ss -ntl | grep $POST >/dev/null then return 0 else return 2 fi fi } function stop(){ runFlag=$(isRuning) if [ $? -eq 1 ]; then echo "$SERVER is already stoped." else echo "准备关闭$SERVER" service $SERVER stop echo "5S后测试是否关闭服务" sleep 2 echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1 runFlag=$(isRuning) if [ $? -eq 1 ] then echo "$SERVER is already stoped" else echo "准备强制结束服务" kill -9 $runFlag fi fi } function start() { local runFlag=$(isRuning) if [ $? -eq 0 ] then echo "正在启动$SERVER服务" service $SERVER restart echo "30s后测试服务是否启动" sleep 27 echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1 runFlag=$(isRuning) echo ${runFlag} if [ ${runFlag} -eq 0 ] then echo "$SERVER 启动失败,请检查配置" return 1 else echo "$SERVER 启动成功 " fi else echo "$SERVER已经启动" fi } function restart() { stop start #service $SERVER restart } case "$4" in start) start ;; stop) stop ;; restart) restart ;; status) isRuning ;; *) echo $"Usage: $0 {start|stop|restart|status}" esac