这里面Shell的各个操作含义,可參考我三年前的这篇文章:http://blog.csdn.net/jadyer/article/details/7960802

#!/bin/sh
APP_NAME=engine
APP_WARS=JadyerEngine-web/target
APP_PATH=/app/tomcat-6.0.43
APP_CODE=sourcecode
SVN_URL=https://svn.sinaapp.com/jadyer/2/repository/JadyerEngine
SVN_USER=jadyer@yeah.net
SVN_PSWD=玄玉 appPID=0
getAppPID(){
pidInfo=`ps aux|grep java|grep $APP_PATH|grep -v grep`
if [ -n "$pidInfo" ]; then
appPID=`echo $pidInfo | awk '{print $2}'`
else
appPID=0
fi
} downloadAndCompileSourceCode(){
cd $APP_PATH
mkdir $APP_CODE
svn --username $SVN_USER --password $SVN_PSWD checkout $SVN_URL $APP_CODE
cd $APP_CODE
mvn clean package -DskipTests
} shutdown(){
getAppPID
echo "[玄玉] ========================================================================================================"
if [ $appPID -ne 0 ]; then
echo -n "[玄玉] Stopping $APP_PATH(PID=$appPID)..."
kill -9 $appPID
if [ $? -eq 0 ]; then
echo "[Success]"
echo "[玄玉] ========================================================================================================"
else
echo "[Failed]"
echo "[玄玉] ========================================================================================================"
fi
getAppPID
if [ $appPID -ne 0 ]; then
shutdown
fi
else
echo "[玄玉] $APP_PATH is not running"
echo "[玄玉] ========================================================================================================"
fi
} deploy(){
cd $APP_PATH/webapps/
rm -rf $APP_NAME
rm -rf $APP_NAME.war
cp $APP_PATH/$APP_CODE/$APP_WARS/*.war $APP_NAME.war
cd $APP_PATH/logs/
rm -rf *
cd $APP_PATH
rm -rf $APP_CODE
} startup(){
cd $APP_PATH/bin
./startup.sh
tail -100f ../logs/catalina.out
} downloadAndCompileSourceCode
shutdown
deploy
startup

上面的脚本在运行的过程中。若Ctrl+C退出后,会导致应用部署失败,故编写了以下这个可在后台运行的脚本

不想用以下这个脚本也能够,仅仅是在运行上面的脚本时直接[nohup ./deploy-engine.sh &]即可了

即便如此。个人仍推荐仅仅用上面的脚本就够了(假设是你自己用的话)!

#!/bin/sh
APP_LOGS=/app/tomcat-6.0.43/logs
SHELL_NAME=bin/deploy-engine.sh shellPID=0
getShellPID(){
pidInfo=`ps aux|grep $SHELL_NAME|grep -v grep`
if [ -n "$pidInfo" ]; then
shellPID=`echo $pidInfo | awk '{print $2}'`
else
shellPID=0
fi
} shutdown(){
getShellPID
echo "[玄玉] ========================================================================================================"
if [ $shellPID -ne 0 ]; then
echo -n "[玄玉] Stopping $SHELL_NAME(PID=$shellPID)..."
kill -9 $shellPID
if [ $? -eq 0 ]; then
echo "[Success]"
echo "[玄玉] ========================================================================================================"
else
echo "[Failed]"
echo "[玄玉] ========================================================================================================"
fi
getShellPID
if [ $shellPID -ne 0 ]; then
shutdown
fi
else
echo "[玄玉] $SHELL_NAME is not running"
echo "[玄玉] ========================================================================================================"
fi
} #[2>&1]表示把标准错误(stderr)重定向到标准输出(stdout),否则会提示[nohup: redirecting stderr to stdout]
startupByNohup(){
cd $APP_LOGS
rm -rf nohup.log
nohup ../$SHELL_NAME > nohup.log 2>&1 &
sleep 1
tail -100f nohup.log
} shutdown
startupByNohup

自己主动下载源代码_并编译_打包_部署_重新启动服务的Shell脚本的更多相关文章

  1. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  2. Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)

    下载hudson ,安装部署http://hudson-ci.org/ 将下载的hudson-3.3.3.war放到tomcat的webapps目录下并启动tomcat,输入地址访问 点击Instal ...

  3. Spark-1.5.2之改动源代码后的自己定义打包编译

    Spark-1.5.2之自己定义打包编译,基于当前最新版本号的spark源代码1.5.2版本号. 自己编译spark是改动spark源代码的必备条件,改动的源代码自己定义打包生效后才干公布到生产环境中 ...

  4. 《linux源代码包的编译安装》RHEL6

    linux下源代码包的编译安装其实没那么复杂. 我是win7系统装的虚拟机,就简单说下: 举个简单的例子: http://www.openssl.org/ 这是openssl的官网,下载openssl ...

  5. 汉高澳大利亚sinox为什么不能下载源代码,因为sinox执行unix/linux/windows规划

    中国用户下载真正的澳大利亚sinox说完后sinox没有下载源代码. 这意味着,类似linux如下载linux 开源安装. 要知道.sinox并非linux. 首先,sinox是商业操作系统,就像 w ...

  6. Saiku二次开发获取源代码在本地编译(五)

    关于Saiku的二次开发,在本地编译然后启动自己编译好的Saiku服务 Saiku是开源的,从github上能下载源代码,本例中的saiku源码也是从github上找的,然后自己改了一些pom.xml ...

  7. Chromium源码系列一:Chromium简介及源代码获取和编译

    Chromium源码系列一:Chromium简介及源代码获取和编译 Chromium简介 ​ Chromium是一个由Google主导开发的网页浏览器,以BSD许可证等多重自由版权发行并开放源代码.C ...

  8. loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852?

    loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852? 在汽车传感器的波形检测应用中,有时候需要模拟各种汽车传感器的输出信号,用来驱动和监测对应的执行机构或者电路是否正常,这其中, ...

  9. GitHub上下载源代码的方法

    GitHub上找到自己要下载的项目以后,有3种方法可以下载源代码. 第一种是复制该项目的地址,然后用其他软件下载: 第二种是安装了官方客户端,可以直接点击"Clone in Desktop& ...

随机推荐

  1. YY的困境:除了终止私有化 还有更多的担忧

    界面 刘莎 已大热一段时间的中概股私有化浪潮随着中国股市的下跌而降温,很多在美上市的中概股不得不因此叫停私有化,欢聚时代(下称YY)首当其冲,成为私有化大军中首个被迫撤退的中资公司. 虽然从表面看,私 ...

  2. Android-PullToRefresh下拉刷新库基本用法

    How:(使用) 转自:http://blog.csdn.net/hantangsongming/article/details/42490277 PullToRefresh是一套实现非常好的下拉刷新 ...

  3. 充分利用CPU高速缓存,提高程序效率(原理篇)

    提高程序效率应该充分利用CPU的高速缓存.要想编写出对CPU缓存友好的程序就得先明白CPU高速缓存的运行机制. i5-2400S: 1.有三级缓存分别为 32k(数据.指令缓存分开,分为32k),25 ...

  4. OpenStack securityGroup rule Set

    OpenStack DBaas 云数据即服务之☞troveError

  5. LSH、ITQ、SKLSH图像检索实验实现(包含源码下载地址)

    原文来自我的独立blog:http://www.yuanyong.org/blog/cv/lsh-itq-sklsh-compliment 这两天寻找idea,想来思去也没想到好点的方法,于是把前段时 ...

  6. AJAX提交到Handler.ashx一般处理程序返回json数据 (字符串拼接方式)

    <%@ WebHandler Language="C#" Class="Handler" %> using System; using System ...

  7. js 推断 当页面无法回退时(history.go(-1)),关闭网页

    在做一个Web项目时遇到一个需求,当页面没有前驱历史记录时(就是当前为新弹出的页面,没法做goback操作即history.go(-1)),点击返回button时直接关闭页面,否则就退回到前一页. 遇 ...

  8. Android开发中目前流行控件和知识点总结

    Android开发中目前流行控件和知识点总结   1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...

  9. TNS-12541,TNS-12560,TNS-00511,TNS-12542,TNS-12560,TNS-00512数据库启动监听报错

    第 1章   数据库server监听错误 1.1.1数据库监听错误 1.1.1.1 问题及现象 server环境为ORACLE11G RAC环境,系统启动后,监听没起来. [oracle@RAC4 ~ ...

  10. mysql数据库的物理文件结构

    mysql两种常用存储引擎myisam和innodb myisam不支持事务:innodb支持事务,当前作为插件来安装 myisam的数据库的物理文件结构为: .frm文件:与表相关的元数据信息都存放 ...