免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 44063 | 回复: 7
打印 上一主题 下一主题

[系统管理] shell脚本BASE_DIR=<%= basedir %>这种写法怎么理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-27 15:04 |只看该作者 |倒序浏览
本帖最后由 sea_tar 于 2016-07-27 17:29 编辑

今天看到别人的脚本里有BASE_DIR=<%= basedir %>这样的赋值写法,这个basedir是如何取值的呢?请教大神下面是完整脚本
DATE_TIME=`date +%Y%m%d_%H%M%S`
BASE_DIR=<%= basedir %>
PUPPET_DIR=<%= puppetdir %>
WEB_DIR=<%= docbase %>
BACKUP_FILE=<%= backupdir %>/newwap.$DATE_TIME.tar.gz
WAR_FILE=$PUPPET_DIR/newwap.war

INSTANCES=(<%= instances %>)
PREFIX=$BASE_DIR/project

ERROR_COUNT_START=0
ROUND=10
LENGTH=${#INSTANCES[@]}
       
# backup project
backup(){
        echo "1) Backup files."
        cd $WEB_DIR
        tar -czf $BACKUP_FILE *
}

# stop tomcat instances
stop(){
        echo "2) Stop tomcat instances."
        for i in ${INSTANCES[@]}
                do
                        $PREFIX/$i/tomcat.sh stop &
                        sleep 5
        done
       
        sleep 5
       
        for ((n=1;n<=$ROUND;n++));do
                c=0
                for i in ${INSTANCES[@]};do
                                PID=`ps -ef | grep $PREFIX/$i | grep -v grep | awk '{print $2}'`
                                if [ -z $PID ];then
                                        c=`expr $c + 1`
                          fi
                done
               
                if [ $c -eq $LENGTH ];then
                        echo "All tomcat instances stop successful."
                        break
                else
                        if [ $n -eq $ROUND ];then
                                for i in ${INSTANCES[@]};do
                                        PID=`ps -ef | grep $PREFIX/$i | grep -v grep | awk '{print $2}'`
                                        if [ -n "${PID}" ];then
                                                echo "Tomcat instance ${i}(pid=${PID}) still alive, try to kill."
                                                kill -9 $PID
                                  fi
                                done
                        fi
                        sleep 3
                fi
        done
}

# redeploy
redeploy(){
        echo "3) Deploy new project and clean old files."
        rm -rf $WEB_DIR/*
        unzip -oq $WAR_FILE -d $WEB_DIR
        echo "Deploy new project successful."
       
        for i in ${INSTANCES[@]}
                do
                        rm -rf $PREFIX/$i/work/*
                        mv $PREFIX/$i/logs/catalina.out $PREFIX/$i/logs/catalina.out.$DATE_TIME
                        echo "Clean tomcat instance ${i}'s temp files successful."
        done
}

# start tomcat instances
start(){
        echo "4) Start tomcat instances and check start info."
        for i in ${INSTANCES[@]}
                do
                        $PREFIX/$i/tomcat.sh start &
        done
       
        sleep 60
       
        for i in ${INSTANCES[@]}
                do
                        if [ `grep "ERROR" $PREFIX/$i/logs/catalina.out | wc -l` != 0 ];then
                                echo "ERROR: tomcat instance ${i} starts with errors!"
                                ERROR_COUNT_START=`expr $ERROR_COUNT_START + 1`
                        else
                                echo "Start tomcat instance ${i} successful."
                        fi
        done
}

echo "There are 4 steps."
source /home/java/.bash_profile
export LANG=<%= lang %>
export JAVA_OPTS="$JAVA_OPTS -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
backup
stop
redeploy
start

if [ $ERROR_COUNT_START != 0 ];then
        echo "Some tomcats start with errors!"
        exit 1
fi

echo "Finish All Steps!"
exit 0

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2016-07-27 15:54 |只看该作者
你确定是脚本吗? 把脚本发粗来瞅瞅

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
3 [报告]
发表于 2016-07-27 17:12 |只看该作者
估计是让用户自己填的格式

论坛徽章:
0
4 [报告]
发表于 2016-07-27 17:28 |只看该作者
DATE_TIME=`date +%Y%m%d_%H%M%S`
BASE_DIR=<%= basedir %>
PUPPET_DIR=<%= puppetdir %>
WEB_DIR=<%= docbase %>
BACKUP_FILE=<%= backupdir %>/newwap.$DATE_TIME.tar.gz
WAR_FILE=$PUPPET_DIR/newwap.war

INSTANCES=(<%= instances %>)
PREFIX=$BASE_DIR/project

ERROR_COUNT_START=0
ROUND=10
LENGTH=${#INSTANCES[@]}
       
# backup project
backup(){
        echo "1) Backup files."
        cd $WEB_DIR
        tar -czf $BACKUP_FILE *
}

# stop tomcat instances
stop(){
        echo "2) Stop tomcat instances."
        for i in ${INSTANCES[@]}
                do
                        $PREFIX/$i/tomcat.sh stop &
                        sleep 5
        done
       
        sleep 5
       
        for ((n=1;n<=$ROUND;n++));do
                c=0
                for i in ${INSTANCES[@]};do
                                PID=`ps -ef | grep $PREFIX/$i | grep -v grep | awk '{print $2}'`
                                if [ -z $PID ];then
                                        c=`expr $c + 1`
                          fi
                done
               
                if [ $c -eq $LENGTH ];then
                        echo "All tomcat instances stop successful."
                        break
                else
                        if [ $n -eq $ROUND ];then
                                for i in ${INSTANCES[@]};do
                                        PID=`ps -ef | grep $PREFIX/$i | grep -v grep | awk '{print $2}'`
                                        if [ -n "${PID}" ];then
                                                echo "Tomcat instance ${i}(pid=${PID}) still alive, try to kill."
                                                kill -9 $PID
                                  fi
                                done
                        fi
                        sleep 3
                fi
        done
}

# redeploy
redeploy(){
        echo "3) Deploy new project and clean old files."
        rm -rf $WEB_DIR/*
        unzip -oq $WAR_FILE -d $WEB_DIR
        echo "Deploy new project successful."
       
        for i in ${INSTANCES[@]}
                do
                        rm -rf $PREFIX/$i/work/*
                        mv $PREFIX/$i/logs/catalina.out $PREFIX/$i/logs/catalina.out.$DATE_TIME
                        echo "Clean tomcat instance ${i}'s temp files successful."
        done
}

# start tomcat instances
start(){
        echo "4) Start tomcat instances and check start info."
        for i in ${INSTANCES[@]}
                do
                        $PREFIX/$i/tomcat.sh start &
        done
       
        sleep 60
       
        for i in ${INSTANCES[@]}
                do
                        if [ `grep "ERROR" $PREFIX/$i/logs/catalina.out | wc -l` != 0 ];then
                                echo "ERROR: tomcat instance ${i} starts with errors!"
                                ERROR_COUNT_START=`expr $ERROR_COUNT_START + 1`
                        else
                                echo "Start tomcat instance ${i} successful."
                        fi
        done
}

echo "There are 4 steps."
source /home/java/.bash_profile
export LANG=<%= lang %>
export JAVA_OPTS="$JAVA_OPTS -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
backup
stop
redeploy
start

if [ $ERROR_COUNT_START != 0 ];then
        echo "Some tomcats start with errors!"
        exit 1
fi

echo "Finish All Steps!"
exit 0



   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
5 [报告]
发表于 2016-07-27 17:34 |只看该作者
回复 4# sea_tar


    如3楼所说, 这个应该是让你去填补的, 人家只是说明

论坛徽章:
0
6 [报告]
发表于 2016-07-28 09:27 |只看该作者
这个是生产环境的正式代码亲


   

论坛徽章:
5
金牛座
日期:2013-10-14 14:40:422015年亚洲杯之伊朗
日期:2015-03-26 10:37:012015亚冠之浦和红钻
日期:2015-10-12 17:47:4115-16赛季CBA联赛之山东
日期:2016-01-20 16:43:1215-16赛季CBA联赛之辽宁
日期:2016-03-29 16:43:59
7 [报告]
发表于 2016-07-28 09:35 |只看该作者
本帖最后由 itfly3 于 2016-07-28 09:36 编辑

他是直接运行这个脚本还是被调用的?我觉得是调用的,调用之前会做替换,故意搞个奇怪的格式,容易匹配

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
8 [报告]
发表于 2016-07-28 10:15 |只看该作者
itfly3 发表于 2016-07-28 09:35
他是直接运行这个脚本还是被调用的?我觉得是调用的,调用之前会做替换,故意搞个奇怪的格式,容易匹配

附议~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP