自动下载源码_并编译_打包_部署_重启服务的Shell脚本
2015-06-03 20:30
941 查看
这里面Shell的各个操作含义,可参考我三年前的这篇文章:http://blog.csdn.net/jadyer/article/details/7960802
上面的脚本在执行的过程中,若Ctrl+C退出后,会导致应用部署失败,故编写了下面这个可在后台执行的脚本
不想用下面这个脚本也可以,只是在执行上面的脚本时直接[nohup ./deploy-engine.sh &]就行了
即便如此,个人仍推荐只用上面的脚本就够了(如果是你自己用的话)!!
#!/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] while read line 与for循环的区别
- 使用crontab,让linux定时执行shell脚本【crontab -e】
- sudo:无法解析主机 解决方案
- linux shell 按行循环读入文件方法
- shell脚本抓取问题进程(守护进程)
- 开启Remote Desktop的PowerShell
- 【转】如何调试bash脚本
- 【转】Linux Shell脚本调试技术
- cygwin下运行shell脚本出现的错误
- 如何远程运行PowerShell命令?
- 用PowerShell创建一个菲波那切数列
- 重启Windows的PowerShell
- 让Windows加入域的PowerShell
- shell编程——变量的数值计算
- shell编程——变量的数值计算
- 关掉Windows Firewall的PowerShell
- 修改IP地址的PowerShell
- Shell读取用户输入【以及循环读取验证和while循环中添加多个条件[ .. ] &&或者|| [ .. ]】
- 读shell基础:执行顺序(||及&&,{}及())及正则表表达式 【()和{}的用处】
- 如何得知当前机器上安装的PowerShell是什么版本的?