начать на выброс не работает на выскочку
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
.
Я что-то пропустил?
0 ответов на вопрос
Похожие вопросы
-
7
Какие службы Windows можно безопасно отключить?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
6
Полноэкранная медленная вспышка в KDE 4
-
-
1
Что можно отключить на Windows XP, чтобы освободить память, не ломая все
-
3
Пакеты в странном состоянии
-
3
Что в мире такое ctfmon.exe?
-
1
Существует ли какая-либо бесплатная служба электронной почты, доступная через веб-службу?
-
1
Windows 7 не запускает Portable Apps Starter на флэш-накопителе
-
5
Возможно ли / целесообразно / разумно ли построить онлайн Time Machine для OS X?
-
3
Acer anbmServ использует 99% CPU - как я могу отключить этот сервис?