自己主动下载源代码_并编译_打包_部署_重新启动服务的Shell脚本
这里面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脚本的更多相关文章
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...
- 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 ...
- Spark-1.5.2之改动源代码后的自己定义打包编译
Spark-1.5.2之自己定义打包编译,基于当前最新版本号的spark源代码1.5.2版本号. 自己编译spark是改动spark源代码的必备条件,改动的源代码自己定义打包生效后才干公布到生产环境中 ...
- 《linux源代码包的编译安装》RHEL6
linux下源代码包的编译安装其实没那么复杂. 我是win7系统装的虚拟机,就简单说下: 举个简单的例子: http://www.openssl.org/ 这是openssl的官网,下载openssl ...
- 汉高澳大利亚sinox为什么不能下载源代码,因为sinox执行unix/linux/windows规划
中国用户下载真正的澳大利亚sinox说完后sinox没有下载源代码. 这意味着,类似linux如下载linux 开源安装. 要知道.sinox并非linux. 首先,sinox是商业操作系统,就像 w ...
- Saiku二次开发获取源代码在本地编译(五)
关于Saiku的二次开发,在本地编译然后启动自己编译好的Saiku服务 Saiku是开源的,从github上能下载源代码,本例中的saiku源码也是从github上找的,然后自己改了一些pom.xml ...
- Chromium源码系列一:Chromium简介及源代码获取和编译
Chromium源码系列一:Chromium简介及源代码获取和编译 Chromium简介 Chromium是一个由Google主导开发的网页浏览器,以BSD许可证等多重自由版权发行并开放源代码.C ...
- loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852?
loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852? 在汽车传感器的波形检测应用中,有时候需要模拟各种汽车传感器的输出信号,用来驱动和监测对应的执行机构或者电路是否正常,这其中, ...
- GitHub上下载源代码的方法
GitHub上找到自己要下载的项目以后,有3种方法可以下载源代码. 第一种是复制该项目的地址,然后用其他软件下载: 第二种是安装了官方客户端,可以直接点击"Clone in Desktop& ...
随机推荐
- thinkphp中神奇的create()方法
正常的表单提交会把所有的表单数据提交上来 $data = $_POST; print_r($data);exit; 结果 Array ( [status] => 1 [comment] => ...
- IP地址分类与识别错误
//描述: 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. //所有的IP地址划分为 A,B,C,D,E五类 //A类地址1.0.0.0 ...
- C based
switch(ch){case '\n': lines += 1; /*fail thru*/case ' ':case '\t': words += 1;default: c ...
- spring mvc <mvc:annotation-driven>配置使用出现故障
我在使用converter进行全局的日期类型转换. 1.写converer public class CustomDateConverter implements Converter<Strin ...
- iOS 自我检測
1.id 和 NSObject的差别? 2.UITableViewCell的复用原理? 3.UIView生命周期和UILayer的差别? 4.多线程NSOperation和Queue.GDC.Thre ...
- EMCA创建em资料库时报错
说明:监听程序配置及启动正常.实例运行正常,远程或是本地sqlplus连接实例也正常.主机名显示正常,与主机名相关三个配置文件也没问题. emca报错: [oracle@rusky-oracle11g ...
- Linux下命令行显示当前全路径方法
/etc/profile 和 ~/.bashrc 或者直接在用户的.bash_profile中添加 export PS1='[\u@\h \W]\$' 然后执行source命令
- C#整理3——运算符和语句
运算符: 一.算术运算符:+ - * / % ——取余运算 取余运算的应用场景:1.奇偶数的区分. 2.把数变化到某个范围之内.——彩票生成. 3.判断能否整除.——闰年.平年. using Syst ...
- 3D 转换
用X.Y.Z分别表示空间的3个维度,三条轴互相垂直.如下图 1.左手坐标系 2.透视(perspective) 电脑显示屏是一个2D平面,图像之所以具有立体感(3D效果),其实只是一种视觉呈现 ,通过 ...
- uploadify控件使用在.net
第一次是博客,还有丢丢小兴奋呢.作为一个资深菜鸟,为了给自己留下点什么,开始记录一些技术问题.当然也是学习过程. 下面是成品的在.net web下的应用,还有很多不足的地方,期待大家的点评. $ ...