Start bei Emit funktioniert nicht beim Upstart

445
Lafada

Ich arbeite daran, den Dienst neu zu starten, wenn er gestoppt ist.

Ich suchte upstart, um den Dienst wieder aufzunehmen. Ich habe ein paar Antworten gefunden .

Ich habe apache2Service zum Testen genommen. Ich habe den Code wie folgt geändert.

# 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  } ... ... 

Hinweis : Nachricht mit sendeninitctl emit stopped-apache2

Dann geändert apache2.conf, um den Startvorgang für dieses Ereignis auszuführen.

# 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 

Wenn ich aufhöre, habe ich eine Nachricht erhalten.

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

Aber es scheint nicht auszuführen start on stopped-apache2.

Ich starte auch wieder mit initctl restart apache2.

Ich habe etwas verpasst ?

1

0 Antworten auf die Frage