K01nginx 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: nginx
  4. # Required-Start: $network $remote_fs $local_fs
  5. # Required-Stop: $network $remote_fs $local_fs
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: Stop/start nginx
  9. ### END INIT INFO
  10. # Author: Sergey Budnevitch <sb@nginx.com>
  11. PATH=/sbin:/usr/sbin:/bin:/usr/bin
  12. if [ -L $0 ]; then
  13. SCRIPTNAME=`/bin/readlink -f $0`
  14. else
  15. SCRIPTNAME=$0
  16. fi
  17. sysconfig=`/usr/bin/basename $SCRIPTNAME`
  18. [ -r /etc/default/$sysconfig ] && . /etc/default/$sysconfig
  19. DESC=${DESC:-nginx}
  20. NAME=${NAME:-nginx}
  21. CONFFILE=${CONFFILE:-/etc/nginx/nginx.conf}
  22. DAEMON=${DAEMON:-/usr/sbin/nginx}
  23. PIDFILE=${PIDFILE:-/var/run/nginx.pid}
  24. SLEEPSEC=${SLEEPSEC:-1}
  25. UPGRADEWAITLOOPS=${UPGRADEWAITLOOPS:-5}
  26. CHECKSLEEP=${CHECKSLEEP:-3}
  27. [ -x $DAEMON ] || exit 0
  28. DAEMON_ARGS="-c $CONFFILE $DAEMON_ARGS"
  29. . /lib/init/vars.sh
  30. . /lib/lsb/init-functions
  31. do_start()
  32. {
  33. start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
  34. $DAEMON_ARGS
  35. RETVAL="$?"
  36. return "$RETVAL"
  37. }
  38. do_stop()
  39. {
  40. # Return
  41. # 0 if daemon has been stopped
  42. # 1 if daemon was already stopped
  43. # 2 if daemon could not be stopped
  44. # other if a failure occurred
  45. start-stop-daemon --stop --quiet --oknodo --retry=TERM/30/KILL/5 --pidfile $PIDFILE
  46. RETVAL="$?"
  47. rm -f $PIDFILE
  48. return "$RETVAL"
  49. }
  50. do_reload() {
  51. #
  52. start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE
  53. RETVAL="$?"
  54. return "$RETVAL"
  55. }
  56. do_configtest() {
  57. if [ "$#" -ne 0 ]; then
  58. case "$1" in
  59. -q)
  60. FLAG=$1
  61. ;;
  62. *)
  63. ;;
  64. esac
  65. shift
  66. fi
  67. $DAEMON -t $FLAG -c $CONFFILE
  68. RETVAL="$?"
  69. return $RETVAL
  70. }
  71. do_upgrade() {
  72. OLDBINPIDFILE=$PIDFILE.oldbin
  73. do_configtest -q || return 6
  74. start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE
  75. RETVAL="$?"
  76. for i in `/usr/bin/seq $UPGRADEWAITLOOPS`; do
  77. sleep $SLEEPSEC
  78. if [ -f $OLDBINPIDFILE -a -f $PIDFILE ]; then
  79. start-stop-daemon --stop --signal QUIT --quiet --pidfile $OLDBINPIDFILE
  80. RETVAL="$?"
  81. return
  82. fi
  83. done
  84. echo $"Upgrade failed!"
  85. RETVAL=1
  86. return $RETVAL
  87. }
  88. do_checkreload() {
  89. templog=`/bin/mktemp --tmpdir nginx-check-reload-XXXXXX.log`
  90. trap '/bin/rm -f $templog' 0
  91. /usr/bin/tail --pid=$$ -n 0 --follow=name /var/log/nginx/error.log > $templog &
  92. /bin/sleep 1
  93. start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE
  94. /bin/sleep $CHECKSLEEP
  95. /bin/grep -E "\[emerg\]|\[alert\]" $templog
  96. }
  97. case "$1" in
  98. start)
  99. [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
  100. do_start
  101. case "$?" in
  102. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  103. 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  104. esac
  105. ;;
  106. stop)
  107. [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
  108. do_stop
  109. case "$?" in
  110. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  111. 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  112. esac
  113. ;;
  114. status)
  115. status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" && exit 0 || exit $?
  116. ;;
  117. configtest)
  118. do_configtest
  119. ;;
  120. upgrade)
  121. do_upgrade
  122. ;;
  123. reload|force-reload)
  124. log_daemon_msg "Reloading $DESC" "$NAME"
  125. do_reload
  126. log_end_msg $?
  127. ;;
  128. restart|force-reload)
  129. log_daemon_msg "Restarting $DESC" "$NAME"
  130. do_configtest -q || exit $RETVAL
  131. do_stop
  132. case "$?" in
  133. 0|1)
  134. do_start
  135. case "$?" in
  136. 0) log_end_msg 0 ;;
  137. 1) log_end_msg 1 ;; # Old process is still running
  138. *) log_end_msg 1 ;; # Failed to start
  139. esac
  140. ;;
  141. *)
  142. # Failed to stop
  143. log_end_msg 1
  144. ;;
  145. esac
  146. ;;
  147. check-reload)
  148. do_checkreload
  149. RETVAL=0
  150. ;;
  151. *)
  152. echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload|upgrade|configtest|check-reload}" >&2
  153. exit 3
  154. ;;
  155. esac
  156. exit $RETVAL