文章目录
java项目在tomcat上编译部署打包运行
#!/bin/sh
# build target file
JAVA_PROCESS=webMgr.war
TARGET_FILE="target/$JAVA_PROCESS"
cd /data/cicd/wms/webMgr
echo "rm $TARGET_FILE -f"
rm $TARGET_FILE -f
echo "mvn install"
mvn install
if [ ! -f $TARGET_FILE ]
then
echo "build wms-web-mgr failed"
exit 1
fi
# backup file
RUN_PATH=/opt/app/apache-tomcat-8.5.66
RUN_PACKAGE=${RUN_PATH}/webapps/ROOT/$JAVA_PROCESS
if [ -f $RUN_PACKAGE ]
then
#获取文件做后修改时间戳
LAST_MODIFY_TIMESTAMP=`stat -c %Y $RUN_PACKAGE`
#格式化时间戳
FORMAT_DATE=`date '+%Y%m%d%H%M%S' -d @$LAST_MODIFY_TIMESTAMP`
echo "$FORMAT_DATE"
BACKUP_FILE=${RUN_PACKAGE}.${FORMAT_DATE}
echo "mv $RUN_PACKAGE $BACKUP_FILE -f"
mv $RUN_PACKAGE $BACKUP_FILE -f
fi
# update file
CURRENT_TS=`date "+%Y%m%d"`
DEST_FILE=${RUN_PACKAGE}.${CURRENT_TS}
echo "cp $TARGET_FILE $DEST_FILE -f"
cp $TARGET_FILE $DEST_FILE -f
echo "cp $DEST_FILE $RUN_PACKAGE -f"
cp $DEST_FILE $RUN_PACKAGE -f
# kill and run
cd ${RUN_PATH}/bin
/opt/app/tomcat/apache-tomcat-8.5.66/bin/shutdown.sh
/opt/app/tomcat/apache-tomcat-8.5.66/bin/startup.sh
springBoot项目打包部署运行
#!/bin/sh
# build target file
JAVA_PROCESS=cicc-web-b.jar
TARGET_FILE="target/$JAVA_PROCESS"
cd /data/cicd/official-web-b
echo "rm $TARGET_FILE -f"
rm $TARGET_FILE -f
echo "mvn install"
mvn install
if [ ! -f $TARGET_FILE ]
then
echo "build official-web-b failed"
exit 1
fi
# backup file
RUN_PACKAGE=/app/ciccwm-b/cicc-web-b.jar
if [ -f $RUN_PACKAGE ]
then
#获取文件做后修改时间戳
LAST_MODIFY_TIMESTAMP=`stat -c %Y $RUN_PACKAGE`
#格式化时间戳
FORMAT_DATE=`date '+%Y%m%d%H%M%S' -d @$LAST_MODIFY_TIMESTAMP`
echo "$FORMAT_DATE"
BACKUP_FILE=${RUN_PACKAGE}.${FORMAT_DATE}
echo "mv $RUN_PACKAGE $BACKUP_FILE -f"
mv $RUN_PACKAGE $BACKUP_FILE -f
fi
# update file
CURRENT_TS=`date "+%Y%m%d"`
DEST_FILE=${RUN_PACKAGE}.${CURRENT_TS}
echo "cp $TARGET_FILE $DEST_FILE -f"
cp $TARGET_FILE $DEST_FILE -f
echo "cp $DEST_FILE $RUN_PACKAGE -f"
cp $DEST_FILE $RUN_PACKAGE -f
# kill and run
ps -ef | grep $JAVA_PROCESS | grep -v "grep" | awk '{print $2}' | xargs kill -9
nohup java -jar $RUN_PACKAGE >/app/ciccwm-b/logs/nohup.log 2>&1 &
前端页面项目打包部署
#!/bin/sh
# build target file
JAVA_PROCESS=ciccwmweb
TARGET_FILE="ciccwm-web/$JAVA_PROCESS"
cd /data/cicd/official-web-f/cicc_web
echo "rm $TARGET_FILE -rf"
rm $TARGET_FILE -rf
echo "npm run build"
npm run build
if [ ! -d $TARGET_FILE ]
then
echo "build official-web-f failed"
exit 1
fi
# backup file
RUN_PACKAGE=/app/data/ciccwm-web/ciccwmweb
if [ -d $RUN_PACKAGE ]
then
#获取文件做后修改时间戳
LAST_MODIFY_TIMESTAMP=`stat -c %Y $RUN_PACKAGE`
#格式化时间戳
FORMAT_DATE=`date '+%Y%m%d%H%M%S' -d @$LAST_MODIFY_TIMESTAMP`
echo "$FORMAT_DATE"
BACKUP_FILE=${RUN_PACKAGE}.${FORMAT_DATE}
echo "mv $RUN_PACKAGE $BACKUP_FILE -f"
mv $RUN_PACKAGE $BACKUP_FILE -f
fi
# update file
CURRENT_TS=`date "+%Y%m%d"`
DEST_FILE=${RUN_PACKAGE}.${CURRENT_TS}
echo "cp $TARGET_FILE $DEST_FILE -rf"
cp $TARGET_FILE $DEST_FILE -rf
echo "cp $DEST_FILE $RUN_PACKAGE -rf"
cp $DEST_FILE $RUN_PACKAGE -rf
# kill and run
/usr/local/nginx/sbin/nginx -s reload
crontab计划任务监控相关进程并拉起
#!/bin/sh
ps axu |grep 'nginx' |grep -v 'grep' &>/dev/null
if [ $? -ne 0 ]
then
echo "准备重启nginx"
/usr/local/nginx/sbin/nginx
if [ $? -eq 0 ]
then echo "nginx启动成功!"
fi
else
echo "nginx正在运行中"
fi
ps axu |grep '/app/ciccwm-b/cicc-web-b.jar' |grep -v 'grep' &>/dev/null
if [ $? -ne 0 ]
then
echo "准备重启/app/ciccwm-b/cicc-web-b.jar"
nohup java -jar /app/ciccwm-b/cicc-web-b.jar >/app/ciccwm-b/logs/nohup.log 2>&1 &
if [ $? -eq 0 ]
then echo "/app/ciccwm-b/cicc-web-b.jar启动成功!"
fi
else
echo "/app/ciccwm-b/cicc-web-b.jar正在运行中"
fi
ps axu |grep '/app/tomcat/apache-tomcat-8.5.66' |grep -v 'grep' &>/dev/null
if [ $? -ne 0 ]
then
echo "准备重启/app/tomcat/apache-tomcat-8.5.66"
/app/tomcat/apache-tomcat-8.5.66/bin/startup.sh
if [ $? -eq 0 ]
then echo "/app/tomcat/apache-tomcat-8.5.66启动成功!"
fi
else
echo "/app/tomcat/apache-tomcat-8.5.66正在运行中"
fi
ps axu |grep '/app/webmgr/apache-tomcat-8.5.66' |grep -v 'grep' &>/dev/null
if [ $? -ne 0 ]
then
echo "准备重启/app/webmgr/apache-tomcat-8.5.66"
/app/webmgr/apache-tomcat-8.5.66/bin/startup.sh
if [ $? -eq 0 ]
then echo "/app/webmgr/apache-tomcat-8.5.66启动成功!"
fi
else
echo "/app/webmgr/apache-tomcat-8.5.66正在运行中"
fi
改进监测进程和拉起
nohup命令:菜鸟教程
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
2>&1 解释:将标准错误2 重定向到标准输出&1,标准输出&1 再被重定向输入到 runoob.log 文件中。
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)
监测java -jar和拉起
#!/bin/sh
RUN_PATH=/app/ciccwm-b/cicc-web-b.jar
MONITOR_PROCESS=`ps axu |grep "${RUN_PATH}" |grep -v 'grep'|wc -l`
RUN_MODE=`nohup java -jar ${RUN_PATH} >/app/ciccwm-b/logs/nohup.log 2>&1 &`
if [ $MONITOR_PROCESS -eq 0 ]
then
echo "准备重启$RUN_PATH"
echo $RUN_MODE
if [ $? -eq 0 ]
then echo "${RUN_PATH}启动成功!"
fi
else
echo "${RUN_PATH}正在运行中"
fi
监测tomcat和拉起
#!/bin/sh
RUN_PATH=/app/tomcat/apache-tomcat-8.5.66
MONITOR_PROCESS=`ps axu |grep "${RUN_PATH}" |grep -v 'grep' |wc -l`
RUN_MODE=${RUN_PATH}/bin/startup.sh
if [ $MONITOR_PROCESS -eq 0 ]
then
echo "准备重启${RUN_PATH}"
$RUN_MODE
if [ $? -eq 0 ]
then echo "${RUN_PATH}启动成功!"
fi
else
echo "${RUN_PATH}正在运行中"
fi
检测nginx和拉起
#!/bin/sh
RUN_MODE=/usr/local/nginx/sbin/nginx
MONITOR_PROCESS=`ps axu |grep "${RUN_MODE}"|grep -v 'grep'|wc -l`
if [ $MONITOR_PROCESS -eq 0 ]
then
echo "准备重启nginx"
$RUN_MODE
if [ $? -eq 0 ]
then echo "nginx启动成功!"
fi
else
echo "nginx正在运行中"
fi
Shell 脚本中调用另一个 Shell 脚本的三种方式
参考博客:SHELL【1】-在 Shell 脚本中调用另一个 Shell 脚本的三种方式
fork
直接在脚本里写另一个要调用脚本的执行路径
#!/bin/bash
RUN_PATH2=/data/app/prod-monitor
echo "开始调用monitor-webmgr"
${RUN_PATH2}/monitor-webmgr.sh
echo "开始调用monitor-nginx开始"
${RUN_PATH2}/monitor-nginx.sh
echo "开始调用monitor-officeb开始"
${RUN_PATH2}/monitor-officeb.sh
echo "开始调用monitor-portal开始"
${RUN_PATH2}/monitor-portal.sh
exec
exec path/test.sh
#!/bin/bash
RUN_DIR=/data/app/prod-monitor
echo "开始调用monitor-webmgr"
exec ${RUN_DIR}/monitor-webmgr.sh
echo "开始调用monitor-nginx开始"
exec ${RUN_DIR}/monitor-nginx.sh
echo "开始调用monitor-officeb开始"
exec ${RUN_DIR}/monitor-officeb.sh
echo "开始调用monitor-portal开始"
exec ${RUN_DIR}/monitor-portal.sh
exec总结:
exec调用脚本后,主脚本中exec后的内容就不会被执行了。
这里我们要调用四个脚本呢,所以exec此时就合适了。
source
source patch/test.sh
#!/bin/bash
RUN_DIR=/data/app/prod-monitor
echo "开始调用monitor-webmgr"
source ${RUN_DIR}/monitor-webmgr.sh
echo "开始调用monitor-nginx开始"
source ${RUN_DIR}/monitor-nginx.sh
echo "开始调用monitor-officeb开始"
source ${RUN_DIR}/monitor-officeb.sh
echo "开始调用monitor-portal开始"
source ${RUN_DIR}/monitor-portal.sh
当将source调用方式问题总结:
当“主脚本”里的变量和“被调用的脚本”里的变量重名时,
主脚本变量先解析到的是被调用脚本里变量的值,
所以此时“被调用脚本”中声明的变量在主脚本中可以调用。
出现以下这个问题是应为“主脚本”和“被调用脚本”里都有一个RUN_PATH变量。