Nginx启动停止脚本
在进行启动Nginx时,需要对其进行检查语法,语法成功则启动Nginx
当Nginx语法检查错误,提示错误的地方,然后进行修复故障。修复成功则继续启动。
[root@shell /scripts]# cat case-4.sh
#!/bin/bash
#1.调用函数库
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
#1.0 加锁机制
Suo=/tmp/nginx.lock
if [ -f $Suo ];then
echo "此脚本$0 正在运行中,请稍后再执行........."
exit
fi
#创建锁
touch $Suo &>/dev/null
#2. 判断执行脚本时是否只有一个位置变量
if [ $# -ne 1 ];then
echo "Usage: $0 {start|stop|status|restart|reload}"
exit
fi
#3.写case语句变量体
State=$1
Pid_File=/var/run/nginx.pid
case $State in
start)
if [ -f $Pid_File ];then
action "服务Nginx正在运行中................" /bin/true
else
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "服务Nginx启动成功..............." /bin/true
else
action "服务Nginx启动失败..............." /bin/false
fi
else
/usr/sbin/nginx -t &>/tmp/nginx_err.log
Nginx_Err_File=$(awk -F '[ :]' 'NR==1{print $(NF-1)}' /tmp/nginx_err.log)
Nginx_Err_Line=$(awk -F '[ :]' 'NR==1{print $NF}' /tmp/nginx_err.log)
/usr/sbin/nginx -t
read -p "Nginx配置文件检查语法失败!配置错误的文件为:${Nginx_Err_File}错误的行为第${Nginx_Err_Line}行,是否需要进行配置修改[Yes|No]:" Qr
case $Qr in
Yes|Y|y|yes)
vim +$Nginx_Err_Line $Nginx_Err_File
/usr/sbin/nginx -t &>/dev/null
if [ $? -eq 0 ];then
/usr/sbin/nginx &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "服务Nginx启动成功..............." /bin/true
else
action "服务Nginx启动失败..............." /bin/false
fi
else
echo "Nginx语法检查还是失败!你可以进行选择手动修改!"
fi
;;
No|N|n|no)
echo "你选择了不进行修改!你可以进行手动修改配置文件!"
;;
*)
echo "你输入的不符合要求!请按照要求输入!"
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 &>/dev/null && sleep 2
if [ $? -eq 0 ];then
action "服务Nginx启动成功..............." /bin/true
else
action "服务Nginx启动失败..............." /bin/false
fi
else
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
fi
;;
reload)
if [ -f $Pid_File ];then
/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
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload}"
exit
esac
#解锁
rm -f $Suo &>/dev/null