博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本
阅读量:4464 次
发布时间:2019-06-08

本文共 8954 字,大约阅读时间需要 29 分钟。

1.shell脚本传参https://blog.csdn.net/sinat_36521655/article/details/792961812.shell脚本获得其他命令的执行结果http://book.51cto.com/art/201411/457601.htm3.shell脚本读取输入https://blog.csdn.net/wdz306ling/article/details/795579314.shell怎么修改环境变量

 

java通用启动脚本

#!/bin/bash#程序住目录APP_HOME=/usr/local/ods/app/dispatchif [ ! -d "$APP_HOME/log4j" ]; then  mkdir $APP_HOME/log4jfi#需要启动的Java主程序(main方法类)APP_MAINCLASS=com.pa.agentbank.drs.job.Start#java虚拟机启动参数JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn256m  -Dsys_config_path=/usr/local/ods/app/dispatch/"#拼凑完整的classpath参数,包括指定lib目录下所有的jarfor i in "$APP_HOME"/lib/*.jar; do   CLASSPATH="$CLASSPATH":"$i"donefor i in "$APP_HOME"/*.jar; do   CLASSPATH="$CLASSPATH":"$i"done####################################(函数)判断程序是否已启动##说明:#使用JDK自带的JPS命令及grep命令组合,准确查找pid#jps 加 l 参数,表示显示java的完整包路径#使用awk,分割出pid ($1部分),及Java程序名称($2部分)####################################初始化psid变量(全局)psid=0 checkpid() {   javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`    if [ -n "$javaps" ]; then      psid=`echo $javaps | awk '{print $1}'`   else      psid=0   fi}####################################(函数)启动程序##说明:#1. 首先调用checkpid函数,刷新$psid全局变量#2. 如果程序已经启动($psid不等于0),则提示程序已启动#3. 如果程序没有被启动,则执行启动命令行#4. 启动命令执行后,再次调用checkpid函数#5. 如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]#注意:echo -n 表示打印字符后,不换行#注意: "nohup 某命令 >/dev/null 2>&1 &" 的用法###################################start() {   checkpid    if [ $psid -ne 0 ]; then      echo "================================"      echo "warn: $APP_MAINCLASS already started! (pid=$psid)"      echo "================================"   else      echo -n "Starting $APP_MAINCLASS ..."      #JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >/dev/null 2>&1 &"      #su - $RUNNING_USER -c "$JAVA_CMD"      #nohup java -cp $CLASSPATH $APP_MAINCLASS >/dev/null 2>&1 &      #nohup java $JAVA_OPTS -cp  ./app_conf:$CLASSPATH $APP_MAINCLASS >/usr/local/ods/app/process/log4j/shellStart.log &      nohup java -cp  ./app_conf:$CLASSPATH $APP_MAINCLASS >/dev/null 2>&1 &      sleep 3      checkpid      if [ $psid -ne 0 ]; then         echo "(pid=$psid) [OK]"      else         echo "[Failed]"      fi   fi}####################################(函数)停止程序##说明:#1. 首先调用checkpid函数,刷新$psid全局变量#2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行#3. 使用kill -9 pid命令进行强制杀死进程#4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $?#5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed]#6. 为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用stop)。#注意:echo -n 表示打印字符后,不换行#注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值###################################stop() {   checkpid    if [ $psid -ne 0 ]; then      echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "      #su - $RUNNING_USER -c "kill -9 $psid"      kill -9 $psid      if [ $? -eq 0 ]; then         echo "[OK]"      else         echo "[Failed]"      fi             sleep 3      checkpid      if [ $psid -ne 0 ]; then         stop      fi   else      echo "================================"      echo "warn: $APP_MAINCLASS is not running"      echo "================================"   fi}####################################(函数)检查程序运行状态##说明:#1. 首先调用checkpid函数,刷新$psid全局变量#2. 如果程序已经启动($psid不等于0),则提示正在运行并表示出pid#3. 否则,提示程序未运行###################################status() {   checkpid    if [ $psid -ne 0 ];  then      echo "$APP_MAINCLASS is running! (pid=$psid)"   else      echo "$APP_MAINCLASS is not running"   fi} case "$1" in   'start')      start      ;;   'stop')     stop     ;;      'status')     status     ;;     *)     echo "Usage: $0 {start|stop|status}"     ;;   esac

 jenkins脚本

#!/bin/sh. /etc/profile#输入参数1 项目名称,也是tar包的名称app_name=$1if [ 0 == ${app_name:-0} ]then     echo "please input the app name"    exit 1fitomcat_home=/usr/local/tomcattomcat_webapp=$tomcat_home/webapps/$app_nameSHUTDOWN=$tomcat_home/bin/shutdown.shSTARTUP=$tomcat_home/bin/startup.shapp_home=$tomcat_home/$app_nameapp_tar=${app_name}.tar.gzapp_bak=$app_home/bakinstall_dir=/home/tomcattime_stamp=`date +%Y%m%d-%H%M%S`#回滚方法function rollback(){    echo ">>> Install rollback."    bak_file=`ls ${app_bak} -t | head -1 |grep -v 'total'`    bak_path=$app_bak/$bak_file    echo ">>> Rollback file : $bak_path."    for file in $app_home/*        do            if [ "$file" != "$app_bak" -a "$file" != "$app_home" ]            then                rm -rf $file            fi        done    mv $bak_path/* $app_home    echo ">>> Remove rollback directory."    rm -rf $bak_path    echo "<<< Rollback complete."}#创建app_home目录function app_homedir(){    if [ ! -e $app_home ]    then        echo ">>> Make directory $app_home"        mkdir $app_home            if [ $? != 0 ]    then         echo ">>> Install fail,please check the log"        exit 1    fi    fi}#备份app路径下除bak外的所有文件function bak_app(){    echo ">>> Backup app"    if [ ! -e $app_bak ]    then        echo ">>> Make directory $app_bak"        mkdir $app_bak            if [ $? != 0 ]    then         echo ">>> Install fail,please check the log"        exit 1    fi    fi    bak_name=`find $app_home -maxdepth 1 -name "ver.*" -printf "%f\n"`    if [ 0 == ${bak_name:-0} ]    then            path_bak=$app_bak/first_bak    else        array=( `echo $bak_name | tr '.' ' '` )        path_bak=$app_bak/${array[1]}    fi    if [ ! -e $path_bak ]    then        echo ">>> Make directory $path_bak"        mkdir $path_bak            if [ $? != 0 ]    then         echo ">>> Install fail,please check the log"        exit 1    fi    fi    for file in $app_home/*        do            if [ "$file" != "$app_bak" -a "$file" != "$app_home" ]            then                mv $file $path_bak            fi        done    echo "<<< Backup app complete"}#解压到app路劲下function install_app(){    echo ">>> Install $app_name start"    #部署日期标识    touch $app_home/ver.${time_stamp}    if [ $? != 0 ]    then         echo ">>> install fail,install will rollback"        return 1    fi    if [ ! -e $install_dir/$app_tar ]    then        rollback        echo "<<< App install file is not exist,please check the app install file"        exit 1    fi    tar -zxf $install_dir/$app_tar -C $app_home    if [ $? != 0 ]    then         echo ">>> install fail,install will rollback"        return 1    fi    rm -f $install_dir/$app_tar    if [ $? != 0 ]    then         echo ">>> install fail,install will rollback"        return 1    fi    echo "<<< Install $app_name complete"}#安装tomcat文件function install_webapps(){    echo ">>> install webapps start"    if [ ! -e $tomcat_webapp ]    then        echo ">>> Make directory $tomcat_webapp"        mkdir $tomcat_webapp            if [ $? != 0 ]    then         echo ">>> Install fail,please check the log"        exit 1    fi    else         echo ">>> Remove $tomcat_webapp"        rm -rf $tomcat_webapp/*            if [ $? != 0 ]    then         echo ">>> Install fail,please check the log"        exit 1    fi    fi    if [ ! -e $install_dir/tomcat-app.tar.gz ]    then        echo "<<< App install file is not exist,please check the webapps install file"            if [ $? != 0 ]    then         echo ">>> Install fail,please check the log"        exit 1    fi    fi    tar -zxf $install_dir/tomcat-app.tar.gz -C $tomcat_webapp    rm -f $install_dir/tomcat-app.tar.gz    echo "<<< install webapps complete"}#修改tomcat中web.xml配置文件,指定目录为app_home目录function update_config(){    echo ">>> Update $tomcat_webapp/WEB-INF/web.xml"    sed -i "s!\${sysprop_home}!${app_home}\/config\/system.properties!g" $tomcat_webapp/WEB-INF/web.xml    echo "<<< Update the vframe-home to $app_home/config/system.properties"}#删除多余备份,只保留3个文件function bak_remove(){    if [ -e $app_bak ]    then        bak_num=`ls ${app_bak} -l | awk '/^d/' | wc -l`        if [ $bak_num -gt 3 ]            then                del_num=`expr ${bak_num} - 3`                for bak_file in `ls ${app_bak} -tr | head -${del_num} |grep -v 'total'`                do                    echo ">>> Delete bak $app_bak/$bak_file"                    rm -rf  $app_bak/$bak_file                done        fi    fi}#关闭tomcatfunction kill_tomcat(){    echo ">>> Tomcat shutdown."    sh $SHUTDOWN    sleep 2    pidList=$(ps aux | grep $tomcat_home | grep -v grep | awk '{print $2}')    for pid in $pidList    do        kill -9 $pid            if [ $? != 0 ]    then         echo ">>> Install fail,please check the log"        exit 1    fi        echo ">>> Kill the process [$pid] successfully."    done    echo "<<< Tomcat shutdown complete"}#启动tomcatfunction start_tomcat(){    echo ">>> Tomcat startup"    sh $STARTUP    if [ $? != 0 ]    then        echo "<<< Fail : Tomcat restart failure."        exit 1    fi    echo "<<< Tomcat startup complete."}echo "=================$app_name install start================="echo ">>> Timestamp:$time_stamp"kill_tomcatapp_homedirbak_appinstall_appif [ $? != 0 ]then     rollback    echo "Install fail,please check the log"    exit 1fiinstall_webappsupdate_configbak_removestart_tomcatecho "=================$app_name install done================="

 

转载于:https://www.cnblogs.com/scorates/p/10523177.html

你可能感兴趣的文章
Django--数据库查询操作
查看>>
自定义配置文件的使用
查看>>
js-20170609-运算符
查看>>
算法笔记_065:分治法求逆序对(Java)
查看>>
MSP430FLASH小结
查看>>
STM32 ADC转换时间
查看>>
结合实际业务场景聊一聊MVP模式的应用
查看>>
WinPE启动U盘的制作方法与软件下载(通用PE工具箱/老毛桃/大白菜WinPE)(转载)...
查看>>
行为型设计模式之5--中介者模式
查看>>
Android DevArt6:Android中IPC的六种方式
查看>>
oracle练习题
查看>>
PMP学习感想
查看>>
Zookeeper全解析——Paxos作为灵魂
查看>>
集合-强大的集合工具类:java.util.Collections中未包含的集合工具
查看>>
CSS清除浮动
查看>>
数据库基础-数据库常用命令总结
查看>>
java8 按对象属性值排序
查看>>
【转帖】国产x86处理器KX-6000发布
查看>>
04-js的运算符
查看>>
第三天 while循环 及其用法
查看>>