一、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