• Shell脚本简单示例


    Shell编程100例:https://zhuanlan.zhihu.com/p/509956726?utm_source=wechat_session&utm_medium=social&utm_oi=988048367724900352

    1      Shell概述

    shell 是一种脚本语言

    脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)

    shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)

    shell命令解析器:

    系统提供 shell命令解析器: sh ash bash

    查看自己linux系统的默认解析:echo $SHELL

    写这篇文章的目的是,基于Shell,批量启动/停止Tomcat的教程。

    2、使用Shell脚本自动安装JDK8

    使用此脚本,你只需要将jdk-8u144-linux-x64.tar.gz这个压缩包放在/root目录下,并新建一个脚本文件,即可实现安装JDK,并自动配置环境变量。

    脚本文件:install_jdk.sh

    1、  在用户家目录(/root)下新建install_jdk.sh文件 

    2、  将JDK安装包放在/root目录下,这里注意一下要注意脚本中的jdk路径,要与存放的jdk目录一直,否则会找不到

    3、  执行脚本:bash install_jdk.sh

    #!/bin/bash
    
    # jdk存放目录(指定jdk放在/root目录下)
    jdkTarget="/root/jdk-8u144-linux-x64.tar.gz"
    jdkInstallCatalogue="/usr/local/java"
    
    # 检查原先是否已配置java环境变量
    checkExist(){
     jdk1=$(grep -n "export JAVA_HOME=.*" /etc/profile | cut -f1 -d':')
        if [ -n "$jdk1" ];then
            echo "JAVA_HOME已配置,删除内容"
            sed -i "${jdk1}d" /etc/profile
        fi
    
     jdk2=$(grep -n "export CLASSPATH=.*\$JAVA_HOME.*" /etc/profile | cut -f1 -d':')
        if [ -n "$jdk2" ];then
            echo "CLASSPATH路径已配置,删除内容"
            sed -i "${jdk2}d" /etc/profile
        fi
    
     jdk3=$(grep -n "export PATH=.*\$JAVA_HOME.*" /etc/profile | cut -f1 -d':')
        if [ -n "$jdk3" ];then
            echo "PATH-JAVA路径已配置,删除内容"
            sed -i "${jdk3}d" /etc/profile
        fi
    }
    
    # 查询是否有jdk.tar.gz
    if [ -e $jdkTarget ];then
    
      #查询jdk安装目录是否存在
        if [ -d $jdkInstallCatalogue ]; then
            echo "— — 删除原jdk安装目录内的所有内容 — —"
            rm -rf /usr/local/java/*
        else
            echo "— — 创建JDK安装目录 — —"
            mkdir -p /usr/local/java &> /dev/null
        fi
    
      echo "— — 存在jdk压缩包 — —"
      echo "正在解压jdk压缩包..."
      tar -zxvf /root/jdk-8u144-linux-x64.tar.gz -C /usr/local/java/ &> /dev/null
    
    # 检查配置信息
     checkExist
    
      echo "---------------------------------"
      echo "正在配置jdk环境..."
      sed -i '$a export JAVA_HOME=/usr/local/java/jdk1.8.0_144' /etc/profile
      sed -i '$a export PATH=.:$JAVA_HOME/bin:$PATH' /etc/profile
      sed -i '$a export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profile
      echo "---------------------------------"
      echo "JAVA环境配置已完成..."
      echo "---------------------------------"
      echo "正在重新加载配置文件..."
      echo "---------------------------------"
      source /etc/profile
      echo "配置版本信息如下:"
      java -version
    else
      echo "未检测到安装包,请将安装包放到/root目录下"
    fi

    3、使用Shell脚本自动安装Tomcat

    使用此脚本,你无需再额外的下载Tomcat的压缩包,该脚本会自动从Apache官网上面下载指定的Tomcat版本。

    当然你如果已经有了安装包放在了/root下,脚本也会自动检测到压缩包,并自动安装并启动Tomcat。

    脚本文件:install_tomcat.sh

    #!/bin/bash
    #定义函数check
    function check(){
      if [ $? == 0 ]; then
              echo -e "\033[32m success \033[0m"
      else
              echo -e "\033[31m fail \033[0m"
              exit 0
      fi
    }
    
    #创建tomcat目录
    if [ -d /usr/local/tomcat ];then
            echo "— — 删除原tomcat安装目录内的所有内容 — —"
            rm -rf /usr/local/tomcat/* &> /dev/null
            cd /usr/local/tomcat &> /dev/null
    else
            echo "正在创建tomcat目录"
            mkdir -p /usr/local/tomcat &> /dev/null
            cd /usr/local/tomcat &> /dev/null
    fi
    check
    #下载tomcat8
    if [ -e apache-tomcat-8.0.23.tar.gz ];then
            tar -zxvf apache-tomcat-8.0.23.tar.gz &> /dev/null
            echo "正在安装tomcat8"
    else
            echo "正在下载tomcat8"
            wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz && tar -zxvf apache-tomcat-8.0.23.tar.gz &> /dev/null
            echo "正在解压tomcat8"
    fi
    check
    #启动tomcat服务
    echo "正在启动tomcat服务"
    cd apache-tomcat-8.0.23/bin && ./startup.sh &> /dev/null
    check
    echo -e "\033[32m 安装成功并启动tomcat服务 \033[0m"
     

    4、使用Shell脚本批量关闭Tomcat,并清理Tomcat日志

    在日常的工作中,难免有需要关闭tomcat的功能,如果一个服务器上面有好几个tomcat,一个个手动关闭进程实在是太繁琐,所以本案例演示一下如何使用shell批量关闭tomcat进程,并清理log文件释放磁盘空间。

    脚本文件:shutdown_all_tomcat.sh

    #!/bin/bash
    echo -e "\e[34m ==================start【`date +"%Y-%m-%d %H:%M:%S"`】================== \e[0m"
    echo -e "\e[33m ==================【批量关闭tomcat,并清理log文件夹】site:================== \e[0m"
    
    # 定义全局变量(有几个tomcat,写几个tomcat的路径)
    tomcat_dir=(
      /usr/local/tomcat/apache-tomcat-8.0.23
      /usr/local/tomcat/apache-tomcat-8.0.23-01
    )
    
    echo "开始清理日志,释放磁盘空间"
    for(( i=0;i<${#tomcat_dir[@]};i++))
    do
        if [ -d  ${tomcat_dir[i]} ]; then
            rm -f ${tomcat_dir[i]}/logs/*;
            echo "${tomcat_dir[i]}日志文件清理完成"
          else
            echo -e "\033[31m目录:${tomcat_dir[i]}不存在,无法指定清理日志工作! \033[0m"
          fi
    done;
    echo "日志文件清理结束"
    
    echo "停止tomcat服务"
    echo -e "\e[34m ==================end【`date +"%Y-%m-%d %H:%M:%S"`】================== \e[0m"
    ps -ef | grep tomcat | grep -v grep | cut -c 9-15 | xargs kill -9 &> /dev/null

    5、使用Shell脚本批量启动tomcat

    脚本文件:start_all_tomcat.sh

    #!/bin/bash
    echo -e "\e[34m ==================start【`date +"%Y-%m-%d %H:%M:%S"`】================== \e[0m"
    echo -e "\e[33m ==================【批量启动Tomcat服务器】site:================== \e[0m"
    
    # 定义全局变量(有几个tomcat,写几个tomcat的路径)
    tomcat_dir=(
      /usr/local/tomcat/tomcat-web1
      /usr/local/tomcat/tomcat-web2
    )
    
    for(( i=0;i<${#tomcat_dir[@]};i++))
    do
      if [ -d  ${tomcat_dir[i]} ]; then
        echo "正在启动:${tomcat_dir[i]}服务"
        cd ${tomcat_dir[i]}/bin && ./startup.sh tail -f ../logs/catalina.out &> /dev/null
      else
        echo -e "\033[31m目录:${tomcat_dir[i]}不存在,无法启动服务! \033[0m"
      fi
    done;
    echo -e "\e[34m ==================end【`date +"%Y-%m-%d %H:%M:%S"`】================== \e[0m"

    1、  在用户家目录(/root)下新建start_all_tomcat.sh文件

    2、  在脚本文件中修改自己的tomcat路径

    3、  启动脚本

    模拟两个Tomcat:

     执行脚本:

     两台Tomcat已成功启动:

  • 相关阅读:
    FNDLOAD 迁移多语言的数据定义
    Failed to lock the main memory
    fnd_function.execute/app_navigate.execute区别
    EBS Form 高亮当前行/设置行背景色
    Fndload常用命令
    EBS Form中数据提交方式(COMMIT)
    隆回护照/港澳通行证办理流程
    浅析淘宝刷单--我们如何网购
    初识 Bootstrap
    框架、架构、设计模式
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/16352319.html
Copyright © 2020-2023  润新知