ubuntu系统中nginx启动脚本
#!/bin/sh
###BEGININITINFO
#Provides: nginx
#Required-Start: $remote_fs$syslog
#Required-Stop: $remote_fs$syslog
#Default-Start: 2345
#Default-Stop: 016
#Short-Description:nginxinit.ddashscriptforUbuntuorother*nix.
#Description: nginxinit.ddashscriptforUbuntuorother*nix.
###ENDINITINFO
#------------------------------------------------------------------------------
#nginx-thisDebianAlmquistshell(dash)script,startsandstopsthenginx
# daemonforUbuntuandother*nixreleases.
#
#description: NginxisanHTTP(S)server,HTTP(S)reverse\
# proxyandIMAP/POP3proxyserver. This\
# scriptwillmanagetheinitiationofthe\
# serverandit"sprocessstate.
#
#processname:nginx
#config: /usr/local/nginx/conf/nginx.conf
#pidfile: /usr/local/nginx/logs/nginx.pid
#Provides: nginx
#
#Author: JasonGiedymin
# <jason.giedyminATgmail.com>.
#
#Version:3.5.111-NOV-2013jason.giedyminATgmail.com
#Notes:nginxinit.ddashscriptforUbuntu.
#Testedwith:Ubuntu13.10,nginx-1.4.3
#
#Thisscript"sprojecthomeis:
# http://github.com/JasonGiedymin/nginx-init-ubuntu
#
#------------------------------------------------------------------------------
# MITX11License
#------------------------------------------------------------------------------
#
#Copyright(c)2008-2013JasonGiedymin,http://jasongiedymin.com
#
#Permissionisherebygranted,freeofcharge,toanypersonobtaining
#acopyofthissoftwareandassociateddocumentationfiles(the
#"Software"),todealintheSoftwarewithoutrestriction,including
#withoutlimitationtherightstouse,copy,modify,merge,publish,
#distribute,sublicense,and/orsellcopiesoftheSoftware,andto
#permitpersonstowhomtheSoftwareisfurnishedtodoso,subjectto
#thefollowingconditions:
#
#Theabovecopyrightnoticeandthispermissionnoticeshallbe
#includedinallcopiesorsubstantialportionsoftheSoftware.
#
#THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,
#EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOF
#MERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEAND
#NONINFRINGEMENT.INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBE
#LIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINANACTION
#OFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTION
#WITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE.
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Functions
#------------------------------------------------------------------------------
LSB_FUNC=/lib/lsb/init-functions
#Testthatinitfunctionsexists
test-r$LSB_FUNC||{
echo"$0:Cannotfind$LSB_FUNC!Scriptexiting."1>&2
exit5
}
.$LSB_FUNC
#------------------------------------------------------------------------------
# Consts
#------------------------------------------------------------------------------
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
PS="nginx"
PIDNAME="nginx" #letsyoudo$PS-slave
PIDFILE=$PIDNAME.pid #pidfile
PIDSPATH=/usr/local/nginx/logs #defaultpidlocation,youshouldchangeit
DESCRIPTION="NginxServer..."
RUNAS=root #usertorunas
SCRIPT_OK=0 #alaerrorcodes
SCRIPT_ERROR=1 #alaerrorcodes
TRUE=1 #boolean
FALSE=0 #boolean
lockfile=/var/lock/subsys/nginx
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
#------------------------------------------------------------------------------
# SimpleTests
#------------------------------------------------------------------------------
#Testifnginxisafileandexecutable
test-x$DAEMON||{
echo"$0:Youdon"thavepermissionstoexecutenginx."1>&2
exit4
}
#Includenginxdefaultsifavailable
if[-f/etc/default/nginx];then
./etc/default/nginx
fi
#setexitcondition
#set-e
#------------------------------------------------------------------------------
# Functions
#------------------------------------------------------------------------------
setFilePerms(){
if[-f$PIDSPATH/$PIDFILE];then
chmod400$PIDSPATH/$PIDFILE
fi
}
configtest(){
$DAEMON-t-c$NGINX_CONF_FILE
}
getPSCount(){
return`pgrep-f$PS|wc-l`
}
isRunning(){
if[$1];then
pidof_daemon$1
PID=$?
if[$PID-gt0];then
return1
else
return0
fi
else
pidof_daemon
PID=$?
if[$PID-gt0];then
return1
else
return0
fi
fi
}
#courtesyofphp-fpm
wait_for_pid(){
try=0
whiletest$try-lt35;do
case"$1"in
"created")
if[-f"$2"];then
try=""
break
fi
;;
"removed")
if[!-f"$2"];then
try=""
break
fi
esac
try=`expr$try+1`
sleep1
done
}
status(){
isRunning
isAlive=$?
if["${isAlive}"-eq$TRUE];then
log_warning_msg"$DESCRIPTIONfoundrunningwithprocesses: `pidof$PS`"
rc=0
else
log_warning_msg"$DESCRIPTIONisNOTrunning."
rc=3
fi
return
}
removePIDFile(){
if[$1];then
if[-f$1];then
rm-f$1
fi
else
#Dodefaultremoval
if[-f$PIDSPATH/$PIDFILE];then
rm-f$PIDSPATH/$PIDFILE
fi
fi
}
start(){
log_daemon_msg"Starting$DESCRIPTION"
isRunning
isAlive=$?
if["${isAlive}"-eq$TRUE];then
log_end_msg$SCRIPT_ERROR
rc=0
else
start-stop-daemon--start--quiet--chuid\
$RUNAS--pidfile$PIDSPATH/$PIDFILE--exec$DAEMON\
---c$NGINX_CONF_FILE
setFilePerms
log_end_msg$SCRIPT_OK
rc=0
fi
return
}
stop(){
log_daemon_msg"Stopping$DESCRIPTION"
isRunning
isAlive=$?
if["${isAlive}"-eq$TRUE];then
start-stop-daemon--stop--quiet--pidfile$PIDSPATH/$PIDFILE
wait_for_pid"removed"$PIDSPATH/$PIDFILE
if[-n"$try"];then
log_end_msg$SCRIPT_ERROR
rc=0#lsbstates1,butunderstatusitis2(whichismoreprescriptive).Deferringtostandard.
else
removePIDFile
log_end_msg$SCRIPT_OK
rc=0
fi
else
log_end_msg$SCRIPT_ERROR
rc=7
fi
return
}
reload(){
configtest||return$?
log_daemon_msg"Reloading(viaHUP)$DESCRIPTION"
isRunning
if[$?-eq$TRUE];then
kill-HUP`cat$PIDSPATH/$PIDFILE`
log_end_msg$SCRIPT_OK
rc=0
else
log_end_msg$SCRIPT_ERROR
rc=7
fi
return
}
quietupgrade(){
log_daemon_msg"PeformingQuietUpgrade$DESCRIPTION"
isRunning
isAlive=$?
if["${isAlive}"-eq$TRUE];then
kill-USR2`cat$PIDSPATH/$PIDFILE`
kill-WINCH`cat$PIDSPATH/$PIDFILE.oldbin`
isRunning
isAlive=$?
if["${isAlive}"-eq$TRUE];then
kill-QUIT`cat$PIDSPATH/$PIDFILE.oldbin`
wait_for_pid"removed"$PIDSPATH/$PIDFILE.oldbin
removePIDFile$PIDSPATH/$PIDFILE.oldbin
log_end_msg$SCRIPT_OK
rc=0
else
log_end_msg$SCRIPT_ERROR
log_daemon_msg"ERROR!Revertingbacktooriginal$DESCRIPTION"
kill-HUP`cat$PIDSPATH/$PIDFILE`
kill-TERM`cat$PIDSPATH/$PIDFILE.oldbin`
kill-QUIT`cat$PIDSPATH/$PIDFILE.oldbin`
wait_for_pid"removed"$PIDSPATH/$PIDFILE.oldbin
removePIDFile$PIDSPATH/$PIDFILE.oldbin
log_end_msg$SCRIPT_OK
rc=0
fi
else
log_end_msg$SCRIPT_ERROR
rc=7
fi
return
}
terminate(){
log_daemon_msg"Forceterminating(viaKILL)$DESCRIPTION"
PIDS=`pidof$PS`||true
[-e$PIDSPATH/$PIDFILE]&&PIDS2=`cat$PIDSPATH/$PIDFILE`
foriin$PIDS;do
if["$i"="$PIDS2"];then
kill$i
wait_for_pid"removed"$PIDSPATH/$PIDFILE
removePIDFile
fi
done
log_end_msg$SCRIPT_OK
rc=0
}
destroy(){
log_daemon_msg"Forceterminatingandmayincludeself(viaKILLALL)$DESCRIPTION"
killall$PS-q>>/dev/null2>&1
log_end_msg$SCRIPT_OK
rc=0
}
pidof_daemon(){
PIDS=`pidof$PS`||true
[-e$PIDSPATH/$PIDFILE]&&PIDS2=`cat$PIDSPATH/$PIDFILE`
foriin$PIDS;do
if["$i"="$PIDS2"];then
return1
fi
done
return0
}
action="$1"
case"$1"in
start)
start
stop)
stop
restart|force-reload)
stop
#if[$rc-ne0];then
# script_exit
#fi
sleep1
start
reload)
$1
status)
status
configtest)
$1
quietupgrade)
$1
terminate)
$1
destroy)
$1
*)
FULLPATH=/etc/init.d/$PS
echo"Usage:$FULLPATH{start|stop|restart|force-reload|status|configtest|quietupgrade|terminate|destroy}"
echo" The"destroy"commandshouldonlybeusedasalastresort."
exit3
esac
exit$rc
相关文章
- 安装Ubuntu 21.04后要做的事「建议收藏」
- Ubuntu 下安装 gcc 教程[通俗易懂]
- Ubuntu安装配置MySQL_nginx upstream
- ubuntu 安装wine qq教程[通俗易懂]
- ubuntu怎么卸载docker_failed to start docker.service
- 美化ubuntu主题系统
- docker创建的mysql连接不上_ubuntu docker
- Ubuntu下卸载多余的Ubuntu系统
- 使用Windows远程桌面工具来远程连接控制Ubuntu系统
- 在 Ubuntu 上换用 OSS4 声音系统
- Ubuntu系统安装可视化桌面教程
- VirtualBox中的虚拟机在Ubuntu 下无法启动之问题解决详解程序员
- 的发行版Ubuntu系统:开放源自Linux的新面貌(ubuntu是linux)
- ubuntu 11.04 安装 Linux Kernel 2.6.39 测试内核
- 在ubuntu 11.04 上安装 lighttpd+php5+mysql网站服务器
- 安装 Shotcut 视频编辑软件-在Ubuntu 13.04/12.04/12.10系统中
- 在 Ubuntu 和其他 Linux 发行版上使用 Yarn
- 如何在 Ubuntu Linux 上释放 /boot 分区的空间?
- 安装Ubuntu系统,轻松使用Oracle(ubuntu安装oracle)
- 发行版Ubuntu系统:U盘安装小技巧(可以装u盘的linux)
- 如何清理不必要的Ubuntu磁盘空间占用
- 从Ubuntu到Linux Mint:我的Linux改名之旅(改名linux)
- Ubuntu Core 16 发布,为安全物联网而生