начать на выброс не работает на выскочку

352
Lafada

Я работаю, чтобы перезапустить службу, если остановлен.

Я искал upstart, чтобы перезапустить сервис. Я нашел несколько ответов .

Я взял apache2сервис для тестирования. Я изменил код, как показано ниже.

# File : /etc/init.d/apache2 ... ... # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred  # either "stop" or "graceful-stop" local STOP=$1 # can't use pidofproc from LSB here local AP_RET=0  # send stopping apache event echo "Stopping....." initctl emit stopping-apache2  if pidof $DAEMON > /dev/null 2>&1 ; then if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE) > /dev/null 2>&1 ; then AP_RET=2 else AP_RET=1 fi else AP_RET=0 fi  # AP_RET is: # 0 if Apache (whichever) is not running # 1 if Apache (whichever) is running # 2 if Apache from the PIDFILE is running  if [ $AP_RET = 0 ] ; then # send stopping apache event echo "Stopped.....1" initctl emit stopped-apache2  return 1 fi  if [ $AP_RET = 2 ] && apache_conftest ; then $APACHE2CTL $STOP > /dev/null 2>&1 apache_wait_stop $? # send stopping apache event echo "Stopped.....2" initctl emit stopped-apache2 return $? else if [ $AP_RET = 2 ]; then clear_error_msg APACHE2_INIT_MESSAGE="The apache2$DIR_SUFFIX configtest failed, so we are trying to kill it manually. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!" killproc -p $PIDFILE $DAEMON apache_wait_stop $? # send stopping apache event echo "Stopped.....3" initctl emit stopped-apache2 return $? elif [ $AP_RET = 1 ] ; then APACHE2_INIT_MESSAGE="There are processes named 'apache2' running which do not match your pid file which are left untouched in the name of safety, Please review the situation by hand". # send stopping apache event echo "Stopped.....4" initctl emit stopped-apache2 return 2 fi fi  } ... ... 

Примечание : отправьте сообщение, используяinitctl emit stopped-apache2

Затем измените, apache2.confчтобы выполнить операцию запуска для этого события.

# File /etc/init/apache2.conf # apache2 # the purpose of this job is # * start apache2 in upstart rather than SysV startup  start on stopped-apache2 stop on runlevel [016]   pre-start script export RUNLEVEL=2 [ -f /var/lib/apache2.enable ] && /etc/init.d/apache2 start end script  post-stop exec /etc/init.d/apache2 stop 

Когда я прекращаю Apache, я получил сообщение.

root@localhost:~# /etc/init.d/apache2 stop [....] Stopping web server: apache2Stopping..... Stopped.....2 . ok 

Но, кажется, не выполняется start on stopped-apache2.

Я также перезапустить работу с помощью initctl restart apache2.

Я что-то пропустил?

1

0 ответов на вопрос