使用源碼包安裝的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: - 85 15
# 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, 2016-9-14
#
# 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 1
start() {
status
if [[ $? -eq 0 ]]; then
echo $"Nginx (PID $(cat $NGINX_PID_FILE)) already started."
return 1
fi
echo -n $"Starting $NGINX_NAME: "
daemon $NGINX_PROG -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $NGINX_LOCK_FILE
return $retval
}
stop() {
status
if [[ $? -eq 1 ]]; then
echo "Nginx server already stopped."
return 1
fi
echo -n $"Stoping $NGINX_NAME: "
killproc $NGINX_PROG
retval=$?
echo
[ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE
return $retval
}
restart() {
stop
sleep 1
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 0 ]]; then
if [[ -f $NGINX_LOCK_FILE ]]; then
return 0
else
return 1
fi
fi
return 1
}
_status() {
status
if [[ $? -eq 0 ]]; 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 1
esac
3、將腳本添加到系統服務並設置開機啟動
# chkconfig --add nginx # chkconfig --level 3 nginx on
4、測試腳本是否能夠執行
運行命令: service nginx start 或 /etc/init.d/nginx start
http://xxxxxx/Linuxjc/1159968.html TechArticle