这个脚本主要用于将java项目自动部署在linux平台的基础呀,这是第二版本。

已经做了相应修改,通过前面的变量,可以定义跨平台实施;而且在项目配置是源引其它文件的,可以更加灵活。

 
  1. #!/bin/bash 
  2. #make by mojigan 
  3. #time 2012-1019 
  4. #version 1.4 
  5. #upgrade the project 
  6.  
  7. #define some value. 
  8. tomcat_program="/opt/tomcat/apache-tomcat-6.0.33_test" 
  9. owner="testtomcat"                             #定义执行升级的用户 
  10. location='/tmp/something/' 
  11.  
  12. function running(){ 
  13.     b='' 
  14.     for ((i=0;i<=100;i+=2)) 
  15.     do 
  16.             printf "progress:[%-50s]%d%%\r" $b $i 
  17.             sleep 0.2 
  18.             b=#$b 
  19.     done 
  20.     echo 
  21.  
  22. function upgrade() { 
  23.     for pro1 in $* 
  24.     do 
  25.         #echo $pro1 
  26.         rundir="/data/webapps/${pro1}_apps/current" 
  27.         backdir="/data/webapps/${pro1}_apps/backup/$pro1" 
  28.         echo $rundir 
  29.         echo $backdir 
  30.         cp -R ${rundir} ${backdir}_$(date "+%Y%m%d_%H%M"
  31.             cd ${rundir} 
  32.             pwd 
  33.             ls -l ${rundir} | awk '$0~/^-/ || $0~/^d/{print "rm -rf",$NF|"bash"}' 
  34.             mv ${location}${pro1}.war ${rundir} 
  35.             jar -xf ${rundir}/${pro1}.war 
  36.             echo "##########" 
  37.         echo "${pro1}" 
  38.             echo "##########" 
  39.     done 
  40.  
  41.  
  42. echo "+--------------------------------------------------------------+" 
  43. echo "| === 确定特定用户执行,否则退出  === |" 
  44. echo "+--------------------------------------------------------------+" 
  45. user=$(id -un) 
  46. if [ ${
    user} == ${owner} ];then 
  47.     echo "Yes,we are the user of $owner " 
  48. else 
  49.     echo "==>the program must run by $owner <==" 
  50.     exit 1 
  51. fi 
  52.  
  53. echo "" 
  54. echo "" 
  55.  
  56. echo "+--------------------------------------------------------------+" 
  57. echo "| === 确认是否需要升级,升级项目数目,否则退出  === |" 
  58. echo "+--------------------------------------------------------------+" 
  59. result=$(find $location -type f -mtime -1  -user  ${owner} -name "*.war"
  60. result1=$(echo $result  | sed "s#$location##g;s#.war##g"
  61.  
  62. if [  -z "$result1" ];then 
  63.     echo "We don't upgrade anything." 
  64.     exit 1 
  65. else 
  66.     echo "When you run this script,it will upgrade the project $result1 " 
  67.     read -p "Would you like do that?(yes/no)" yesno 
  68.     if [ ${yesno} == "yes" ];then 
  69.         echo "    Let's go,update the project. " 
  70.     else 
  71.         echo "You stop the bash script,we don't upgrade the project." 
  72.         exit 1 
  73.     fi 
  74. fi 
  75.  
  76. echo "" 
  77. echo "" 
  78.  
  79. echo "+--------------------------------------------------------------+" 
  80. echo '| === 由于升级需要,准备杀掉tomcat进程,请慎重!!!!!  === |' 
  81. echo "+--------------------------------------------------------------+" 
  82. echo "######################################" 
  83. echo "##WARNING.I WANT TO KILL THE TOMCAT.##" 
  84. echo "######################################" 
  85. read -p "Would you like do that?(yes/no)" yesno 
  86. if [ ${yesno} == "yes" ];then 
  87.     echo "Let's go,update the project. " 
  88.     echo "kill the tomcat service instance,please hold on 5 seconds........." 
  89.     kill $(pgrep -u testtomcat java) 
  90.     running 
  91.     running 
  92. else 
  93.     echo "You stop the bash script,we don't kill the tomcat and update project ." 
  94.     exit 1 
  95. fi 
  96.  
  97. echo "" 
  98. echo "" 
  99.  
  100. echo "+--------------------------------------------------------------+" 
  101. echo '| === 项目升级进行中,请稍候. we are running now.  === |' 
  102. echo "+--------------------------------------------------------------+" 
  103. echo "通过调用函数,把相应的参数导入即可"   
  104. echo "进行备份,删除,转移,解压等操作." 
  105. upgrade $result1 
  106.  
  107. echo "" 
  108. echo "" 
  109.  
  110. echo "+--------------------------------------------------------------+" 
  111. echo '| === 复制替换修改配置文件  === |' 
  112. echo "+--------------------------------------------------------------+" 
  113. #cpp something. 
  114. source /home/testtomcat/bin/configure.file 
  115.  
  116. echo "" 
  117. echo "" 
  118.  
  119. echo "+--------------------------------------------------------------+" 
  120. echo '| === 启动tomcat进程实例,大功告成,哈哈哈哈哈哈.  === |' 
  121. echo "+--------------------------------------------------------------+" 
  122. #startup tomcat server 
  123. ${tomcat_program}/bin/startup.sh 
  124.  
  125. echo "" 
  126. echo "" 
  127.  
  128. echo "+--------------------------------------------------------------+" 
  129. echo '| === 查看后台日志,了解事实的真相. === |' 
  130. echo "+--------------------------------------------------------------+" 
  131. echo "#view logs" 
  132. running 
  133. running 
  134. tail -f ${tomcat_program}/logs/catalina.out