模拟系统启停脚本
[root@ssh02 scripts]# cat case-nginx.sh
#!/bin/bash
#Author: Qjp.com
#QQ: 1532810249
#Date: 2019-11-02
#FileName: case-nginx.sh
#URL: https://www.qinjianpeng.top
#Description:
source /etc/init.d/functions
nginx_pid=/var/run/nginx.pid
case $1 in
start)
#判断启动UID文件是否存在.
if [ -f $nginx_pid ];then
#判断文件是否为空
if [ -s $nginx_pid ];then
action "nginx 已经启动" /bin/false
else
#为空则删除
rm -f $nginx_pid
systemctl start nginx &>/dev/null
if [ $? -eq 0 ];then
action "nginx 启动成功" /bin/true
else
action "nginx 启动失败" /bin/false
fi
fi
else
systemctl start nginx &>/dev/null
if [ $? -eq 0 ];then
action "nginx 启动成功" /bin/true
else
action "nginx 启动失败" /bin/false
fi
fi
;;
stop)
if [ -f $nginx_pid ];then
systemctl stop nginx && \
rm -f $nginx_pid
action "Nginx is stop" /bin/true
else
action "[error] open() "$nginx_pid" failed (2: No such file or directory)" /bin/false
fi
;;
status)
if [ -f $nginx_pid ];then
echo "ngixn (pid $(cat $nginx_pid)) is running....."
else
echo "nginx is stopped"
fi
;;
reload)
#1.nginx启动了没有,启动直接报错
#2.nginx启动了,需要reload,但是先要检查语法
#如果nginx语法没有问题,则reload
#如果有问题提示用户是否进入对应的错误行数修改否则退出
if [ -f $nginx_pid ];then
nginx -t -c /etc/nginx/nginx.conf &>nginx.err
rc=$?
if [ $rc -eq 0 ];then
systemctl reload nginx &>/dev/null
else
ngx_conf=$(cat nginx.err |awk -F "[ :]" 'NR==1 {print $(NF-1)}')
ngx_line=$(cat nginx.err |awk -F "[ :]" 'NR==1 {print $NF}')
read -p "是否进入${ngx_conf}错误配置文件的${ngx_line}进行修改" tt
case $tt in
y)
vim $ngx_conf +${ngx_line}
;;
n)
exit 1
;;
esac
fi
else
echo "Nginx 没有启动"
fi
;;
*)
echo "USAGE: $0 {start|stop|status|reload}"
exit 1
esac