SHELL编写NGINX服务控制脚本

使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的服务控制脚本。

可以使用的选项有:

start     启动

stop     停止

reload   重载

restart    重启

status    状态

test    检查配置文件

1、创建脚本文件并添加执行权限

# touch /etc/init.d/nginx
# chmod +x /etc/init.d/nginx

2、编写脚本内容

#!/bin/bash
# chkconfig: -
# description: Nginx server control script
# processname: nginx
# config file: /usr/local/nginx/conf/nginx.conf
# pid file: /usr/local/nginx/logs/nginx.pid
#
# eastmoney public tools
# version: v1.0.0
# create by XuHoo, --
# # source function library
. /etc/rc.d/init.d/functions NGINX_NAME="nginx"
NGINX_PROG="/usr/local/sbin/nginx"
NGINX_PID_FILE="/usr/local/nginx/logs/nginx.pid"
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
NGINX_LOCK_FILE="/var/lock/subsys/nginx.lock" # check current user
[ "$USER" != "root" ] && exit start() {
status
if [[ $? -eq ]]; then
echo $"Nginx (PID $(cat $NGINX_PID_FILE)) already started."
return
fi
echo -n $"Starting $NGINX_NAME: "
daemon $NGINX_PROG -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq ] && touch $NGINX_LOCK_FILE
return $retval
} stop() {
status
if [[ $? -eq ]]; then
echo "Nginx server already stopped."
return
fi
echo -n $"Stoping $NGINX_NAME: "
killproc $NGINX_PROG
retval=$?
echo
[ $retval -eq ] && rm -f $NGINX_LOCK_FILE
return $retval
} restart() {
stop
sleep
start
retval=$?
return $retval
} reload() {
echo -n $"Reloading $NGINX_NAME: "
killproc $NGINX_PROG -HUP
retval=$?
echo
return $retval
} status() {
netstat -anpt | grep "/nginx" | awk '{print $6}' &> /dev/null
if [[ $? -eq ]]; then
if [[ -f $NGINX_LOCK_FILE ]]; then
return
else
return
fi
fi
return
} _status() {
status
if [[ $? -eq ]]; then
state=`netstat -anpt | grep "/nginx" | awk '{ print $6 }'`
echo $"Nginx server status is: $state"
else
echo "Nginx server is not running"
fi
} test() {
$NGINX_PROG -t -c $NGINX_CONF_FILE
retval=$?
return $retval
} case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
status)
_status
;;
test)
test
;;
*)
echo "Usage: { start | stop | reload | restart | status | test }"
exit
esac

3、将脚本添加到系统服务并设置开机启动

# chkconfig --add nginx
# chkconfig --level nginx on

4、测试脚本是否能够执行

运行命令: service nginx start 或 /etc/init.d/nginx start

上一篇:BZOJ 3597 SCOI2014 方伯伯送椰子 网络流分析+SPFA


下一篇:BZOJ3597 SCOI2014方伯伯运椰子(分数规划+spfa)