SHELL編寫NGINX服務控制指令碼,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: - 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/functionsNGINX_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 1start() { 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 1esac
3、將指令碼添加到系統服務並設定開機啟動
# chkconfig --add nginx# chkconfig --level 3 nginx on
4、測試指令碼是否能夠執行
運行命令: service nginx start 或 /etc/init.d/nginx start