一、case语句格式
case语句主要就是程序的选择、循环等进行控制
case $变量 in 变量1) 命令 ;; 变量2) 命令 ;; 变量3) 命令 ;; 变量n) 命令 ;; *) 无匹配的变量序列 esac
二、Rsync启动脚本
1.脚本代码
[root@xian /server/scripts]# cat rsync_server.sh
#!/bin/bash
# File Name: case_start_rsync.sh
# Author: lixian
#######################
#引用函数库
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
#加锁
Suo=/tmp/rsync.block
if [ -f $Suo ];then
action "此脚本正在运行,请稍后再执行!" /bin/false
exit
fi
#判断执行脚本是否存在位置变量
if [ $# -ne 1 ];then
action "请在脚本后输入对Rsync服务执行的参数!" /bin/false
exit
fi
#创建锁
touch $Suo
#根据位置变量执行相对应的命令
Pid_File=/var/run/rsync.pid
case $1 in
start)
if [ -f $Pid_File ];then
action "检测Rsync服务已经启动" /bin/true
else
#启动服务
/usr/bin/rsync --daemon &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Rsync服务启动成功!" /bin/true
Pid=$(ps awx |grep rsync |awk 'NR==1{print $2}')
echo $Pid > $Pid_File
else
action "Rsync服务启动失败!" /bin/false
fi
fi
;;
stop)
if [ -f $Pid_File ];then
pkill rsync &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Rsync服务停止成功!" /bin/true
rm -f $Pid_File &>/dev/null
else
action "Rsync服务停止失败!" /bin/false
fi
else
action "检测Rsync服务未运行!" /bin/false
fi
;;
status)
if [ -f $Pid_File ];then
action "检测Rsync服务已经启动!" /bin/true
else
action "Rsync服务没有运行!" /bin/true
fi
;;
restart)
if [ -f $Pid_File ];then
rm -f $Pid_File && pkill rsync &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Rsync服务停止成功!" /bin/true
else
action "Rsync服务停止失败!" /bin/false
fi
/usr/bin/rsync --daemon &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Rsync服务启动成功!" /bin/true
Pid=$(ps awx |grep rsync |awk 'NR==1{print $2}')
else
action "Rsync服务启动失败!" /bin/false
fi
else
action "检测服务Rsync未启动!" /bin/true
/usr/bin/rsync --daemon &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "服务Rsync启动成功" /bin/true
Pid=$(ps awx |grep rsync |awk 'NR==1{print $2}')
echo $Pid > $Pid_File
else
action "服务Rsync启动失败!" /bin/false
fi
fi
;;
*)
action "您输入的参数不正确!" /bin/false
esac
#解锁
rm -f $Suo
2.执行结果
三、Nginx服务启动脚本
1.脚本代码
#!/bin/bash
# File Name: nginx_start.sh
# Author: lixian
#######################
#引用函数库
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
#加锁
Suo=/tmp/nginx.lock
#判断是否存在锁机制
if [ -f $Suo ];then
action "警告:此脚本有人正在执行!请稍后再执行!" /bin/false
exit
fi
#判断执行脚本时的位置变量是否存在且唯一
if [ $# -ne 1 ];then
action "请输入 start|restart|stop|status 参数!" /bin/false
exit
fi
#创建锁
touch $Suo
Pid_File=/var/run/nginx.pid
#编写case语句
case $1 in
start)
if [ -f $Pid_File ];then
action "检测Nginx服务正在运行中!" /bin/true
else
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务启动成功!" /bin/true
else
action "Nginx服务启动失败!" /bin/false
fi
else
Error=/tmp/nginx_error.log
/usr/sbin/nginx -t &>$Error
Nginx_File=$(awk -F '[ :]' 'NR==1{print $(NF-1)}' $Error)
Nginx_Line=$(awk -F '[ :]' 'NR==1{print $NF}' $Error)
/usr/sbin/nginx -t
action "Nginx配置文件语法检查失败!" /bin/false
read -p "配置文件为:${Nginx_File},错误的位置在第${Nginx_Line}行,是否进行配置修改[Yes|No]:" Confirm
case $Confirm in
Yes|yes|y|Y)
vim +$Nginx_Line $Nginx_File
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务启动成功!" /bin/true
else
action "Nginx服务启动失败!" /bin/false
fi
else
action "Nginx配置文件语法还是错误,请手动修改!" /bin/false
fi
;;
No|no|N|n)
action "您拒绝了修改配置文件,这将导致Nginx服务不能启动!" /bin/true
;;
*)
action "输入的内容不规范!输入修改或者不修改!" /bin/false
esac
fi
fi
;;
stop)
if [ -f $Pid_File ];then
/usr/sbin/nginx -s stop &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务停止成功!" /bin/true
else
action "Nginx服务停止失败!" /bin/false
fi
else
action "Nginx服务未运行!" /bin/true
fi
;;
status)
if [ -f $Pid_File ];then
action "检测Nginx服务正在运行中!" /bin/true
else
action "Nginx服务未运行!" /bin/true
fi
;;
restart)
if [ -f $Pid_File ];then
/usr/sbin/nginx -s stop &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务停止成功!" /bin/true
else
action "Nginx服务停止失败!" /bin/false
fi
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务启动成功!" /bin/true
else
action "Nginx服务启动失败!" /bin/false
fi
else
Error=/tmp/nginx_error.log
/usr/sbin/nginx -t &>$Error
Nginx_File=$(awk -F '[ :]' 'NR==1{print $(NF-1)}' $Error)
Nginx_Line=$(awk -F '[ :]' 'NR==1{print $NF}' $Error)
/usr/sbin/nginx -t
action "Nginx配置文件语法检查失败!" /bin/false
read -p "配置文件为:${Nginx_File},错误的位置在第${Nginx_Line}行,是否进行配置修改[Yes|No]:" Confirm
case $Confirm in
Yes|y|Y)
vim +$Nginx_Line $Nginx_File
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx -s stop &>/dev/null && sleep 2
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务启动成功!" /bin/true
else
action "Nginx服务启动失败!" /bin/false
fi
else
action "Nginx配置文件语法还是错误,请手动修改!" /bin/false
fi
;;
No|N|n)
action "您拒绝了修改配置文件,这将导致Nginx服务不能启动!" /bin/true
;;
*)
action "输入的内容不规范!输入修改或者不修改!" /bin/false
esac
fi
else
action "Nginx服务未运行!" /bin/true
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务启动成功!" /bin/true
else
action "Nginx服务启动失败!" /bin/false
fi
else
Error=/tmp/nginx_error.log
/usr/sbin/nginx -t &>$Error
Nginx_File=$(awk -F '[ :]' 'NR==1{print $(NF-1)}' $Error)
Nginx_Line=$(awk -F '[ :]' 'NR==1{print $NF}' $Error)
/usr/sbin/nginx -t
action "Nginx配置文件语法检查失败!" /bin/false
read -p "配置文件为:${Nginx_File},错误的位置在第${Nginx_Line}行,是否进行配置修改[Yes|No]:" Confirm
case $Confirm in
Yes|y|Y)
vim +$Nginx_Line $Nginx_File
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务启动成功!" /bin/true
else
action "Nginx服务启动失败!" /bin/false
fi
else
action "Nginx配置文件语法还是错误,请手动修改!" /bin/false
fi
;;
No|N|n)
action "您拒绝了修改配置文件,这将导致Nginx服务不能启动!" /bin/true
;;
*)
action "输入的内容不规范!输入修改或者不修改!" /bin/false
esac
fi
fi
;;
reload)
if [ -f $Pid_File ];then
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx -s reload &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务平滑重启成功!" /bin/true
else
action "Nginx服务平滑重启失败!" /bin/false
fi
else
Error=/tmp/nginx_error.log
/usr/sbin/nginx -t &>$Error
Nginx_File=$(awk -F '[ :]' 'NR==1{print $(NF-1)}' $Error)
Nginx_Line=$(awk -F '[ :]' 'NR==1{print $NF}' $Error)
/usr/sbin/nginx -t
action "Nginx配置文件语法检查失败!" /bin/false
read -p "配置文件为:${Nginx_File},错误的位置在第${Nginx_Line}行,是否进行配置修改[Yes|No]:" Confirm
case $Confirm in
Yes|y|Y)
vim +$Nginx_Line $Nginx_File
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
action "Nginx配置文件语法检查成功!" /bin/true
/usr/sbin/nginx -s reload &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "Nginx服务平滑重启成功!" /bin/true
else
action "Nginx服务平滑重启失败!" /bin/false
fi
else
action "Nginx配置文件语法还是错误,请手动修改!" /bin/false
fi
;;
No|N|n)
action "您拒绝了修改配置文件,这将导致Nginx服务不能启动!" /bin/true
;;
*)
action "输入的内容不规范!输入修改或者不修改!" /bin/false
esac
fi
else
action "检测Nginx服务未运行!不能进行平滑重启!" /bin/false
fi
;;
*)
action "请输入 start|restart|stop|status 参数!" /bin/false
esac
#解锁
rm -f $Suo



