Shell脚本简单示例

Posted z_子颜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本简单示例相关的知识,希望对你有一定的参考价值。

1      Shell概述

shell 是一种脚本语言

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

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

shell命令解析器:

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

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

Shell脚本简单示例_apache

写这篇文章的目的是,基于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"

Shell脚本简单示例_java_02

Shell脚本简单示例_tomcat_03

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

Shell脚本简单示例_Shell脚本_04

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:

Shell脚本简单示例_Shell脚本_05

 

 执行脚本:

Shell脚本简单示例_tomcat_06

 

 两台Tomcat已成功启动:

Shell脚本简单示例_apache_07


以上是关于Shell脚本简单示例的主要内容,如果未能解决你的问题,请参考以下文章

简单而有效的Linux Shell脚本示例

shell的case脚本的简单入门

shell--运行示例

将简单的 shell 脚本作为 cronjob 运行

shell的select脚本的简单入门

编写简单的shell脚本用于方便管理防火墙