科技常识:ubuntu系统中nginx启动脚本

2021-03-29 22:19:14
导读今天小编跟大家讲解下有关科技常识:ubuntu系统中nginx启动脚本,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关科技常识:ubu

今天小编跟大家讲解下有关科技常识:ubuntu系统中nginx启动脚本,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关科技常识:ubuntu系统中nginx启动脚本的相关资料,希望小伙伴会喜欢也能够帮助大家。

复制代码 代码如下:#! /bin/sh### BEGIN INIT INFO# Provides: nginx# Required-Start: $remote_fs $syslog# Required-Stop: $remote_fs $syslog# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: nginx init.d dash script for Ubuntu or other *nix.# Description: nginx init.d dash script for Ubuntu or other *nix.### END INIT INFO#------------------------------------------------------------------------------# nginx - this Debian Almquist shell (dash) script, starts and stops the nginx# daemon for Ubuntu and other *nix releases.## description: Nginx is an HTTP(S) server, HTTP(S) reverse \# proxy and IMAP/POP3 proxy server. This \# script will manage the initiation of the \# server and it's process state.## processname: nginx# config: /usr/local/nginx/conf/nginx.conf# pidfile: /usr/local/nginx/logs/nginx.pid# Provides: nginx## Author: Jason Giedymin# <jason.giedymin AT gmail.com>.## Version: 3.5.1 11-NOV-2013 jason.giedymin AT gmail.com# Notes: nginx init.d dash script for Ubuntu.# Tested with: Ubuntu 13.10, nginx-1.4.3# # This script's project home is:# http://github.com/JasonGiedymin/nginx-init-ubuntu##------------------------------------------------------------------------------# MIT X11 License#------------------------------------------------------------------------------## Copyright (c) 2008-2013 Jason Giedymin, http://jasongiedymin.com## Permission is hereby granted, free of charge, to any person obtaining# a copy of this software and associated documentation files (the#"Software"), to deal in the Software without restriction, including# without limitation the rights to use, copy, modify, merge, publish,# distribute, sublicense, and/or sell copies of the Software, and to# permit persons to whom the Software is furnished to do so, subject to# the following conditions:## The above copyright notice and this permission notice shall be# included in all copies or substantial portions of the Software.## THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND,# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.#------------------------------------------------------------------------------

#------------------------------------------------------------------------------# Functions#------------------------------------------------------------------------------LSB_FUNC=/lib/lsb/init-functions

# Test that init functions existstest -r $LSB_FUNC || { echo"$0: Cannot find $LSB_FUNC! Script exiting."1>&2 exit 5}

. $LSB_FUNC

#------------------------------------------------------------------------------# Consts#------------------------------------------------------------------------------PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/local/nginx/sbin/nginx

PS="nginx"PIDNAME="nginx"#lets you do $PS-slavePIDFILE=$PIDNAME.pid #pid filePIDSPATH=/usr/local/nginx/logs #default pid location, you should change it

DESCRIPTION="Nginx Server..."

RUNAS=root #user to run as

SCRIPT_OK=0 #ala error codesSCRIPT_ERROR=1 #ala error codesTRUE=1 #booleanFALSE=0 #boolean

lockfile=/var/lock/subsys/nginxNGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

#------------------------------------------------------------------------------# Simple Tests#------------------------------------------------------------------------------

# Test if nginx is a file and executabletest -x $DAEMON || { echo"$0: You don't have permissions to execute nginx."1>&2 exit 4}

# Include nginx defaults if availableif [ -f /etc/default/nginx ]; then . /etc/default/nginxfi

#set exit condition#set -e

#------------------------------------------------------------------------------# Functions#------------------------------------------------------------------------------

setFilePerms(){ if [ -f $PIDSPATH/$PIDFILE ]; then chmod 400 $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 -gt 0 ]; then return 1 else return 0 fi else pidof_daemon PID=$?

if [ $PID -gt 0 ]; then return 1 else return 0 fi fi}

#courtesy of php-fpmwait_for_pid () { try=0

while test $try -lt 35 ; 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` sleep 1 done}

status(){ isRunning isAlive=$?

if ["${isAlive}"-eq $TRUE ]; then log_warning_msg"$DESCRIPTION found running with processes: `pidof $PS`"rc=0 else log_warning_msg"$DESCRIPTION is NOT running."rc=3 fi

return}

removePIDFile(){ if [ $1 ]; then if [ -f $1 ]; then rm -f $1 fi else #Do default removal 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 # lsb states 1, but under status it is 2 (which is more prescriptive). Deferring to standard. 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 (via HUP) $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"Peforming Quiet Upgrade $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! Reverting back to original $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"Force terminating (via KILL) $DESCRIPTION"PIDS=`pidof $PS` || true

[ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE`

for i in $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"Force terminating and may include self (via KILLALL) $DESCRIPTION"killall $PS -q >> /dev/null 2>&1 log_end_msg $SCRIPT_OK rc=0}

pidof_daemon() { PIDS=`pidof $PS` || true

[ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE`

for i in $PIDS; do if ["$i"="$PIDS2"]; then return 1 fi done

return 0}

action="$1"case"$1"in start) start stop) stop restart|force-reload) stop # if [ $rc -ne 0 ]; then # script_exit # fi sleep 1 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' command should only be used as a last resort."exit 3esac

exit $rc

来源:爱蒂网

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章