Shell脚本简单示例

须知少年凌云志,曾许人间第一流。这篇文章主要讲述Shell脚本简单示例相关的知识,希望能为你提供帮助。
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 "$jdk1d" /etc/profile
fi

jdk2=$(grep -n "export CLASSPATH=.*\\$JAVA_HOME.*" /etc/profile | cut -f1 -d:)
if [ -n "$jdk2" ]; then
echo "CLASSPATH路径已配置,删除内容"
sed -i "$jdk2d" /etc/profile
fi

jdk3=$(grep -n "export PATH=.*\\$JAVA_HOME.*" /etc/profile | cut -f1 -d:)
if [ -n "$jdk3" ]; then
echo "PATH-JAVA路径已配置,删除内容"
sed -i "$jdk3d" /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已成功启动:

【Shell脚本简单示例】


    推荐阅读