Подтвердить что ты не робот

Служба не поддерживает chkconfig

Добрый день, программисты. У меня проблема. Пожалуйста помоги. Я создаю службу, которая должна загружаться автоматически при загрузке Linux. Итак, я скопировал script в каталог /etc/rc.d/init.d или/etc/init.d/. Но когда я выполняю команду

chkconfig --add listOfProcesses

возникает ошибка:

service  listOfProcesses doesn't support chkconfig

Вот содержание script. Я нашел первую версию в Google и использовал ее в качестве шаблона.

#!/bin/bash
# listOfProcesses   Start the process which will show the list of processes
# chkconfig: 345 110 02
# description: This process shows current time and the list of processes
# processname: listOfProcesses
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: shows current time and the list of processes
# Description: This process shows current time and the list of processes
### END INIT INFO
# Source function library.
KIND="listOfProcesses"
    start() {
            echo -n $"Starting $KIND services: "
            daemon /home/myscript
            echo
    }   

    stop() {
            echo -n $"Shutting down $KIND services: "
            killproc /home/myscript
            echo
    }   

    restart() {
                echo -n $"Restarting $KIND services: "   
                   killproc /home/myscript
               daemon /home/myscript
               echo
    }   

    case "$1" in
      start)
              start
            ;;
      stop)
              stop
            ;;
      restart)
              restart
            ;;
      *)
            echo $"Usage: $0 {start|stop|restart}"
            exit 1
    esac
    exit $?

exit 0;

Вторая версия была сделана из cron script. Я нашел cron script, скопировал его и изменил, поэтому использовал его как шаблон.

#!/bin/sh
#
# crond          Start/Stop the cron clock daemon.
#
# chkconfig: 2345 90 60
# description: cron is a standard UNIX program that runs user-specified \
#              programs at periodic scheduled times. vixie cron adds a \
#              number of features to the basic UNIX cron, including better \
#              security and more powerful configuration options.

### BEGIN INIT INFO
# Provides: crond crontab
# Required-Start: $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start:  2345
# Default-Stop: 90
# Short-Description: run cron daemon
# Description: cron is a standard UNIX program that runs user-specified 
#              programs at periodic scheduled times. vixie cron adds a 
#              number of features to the basic UNIX cron, including better 
#              security and more powerful configuration options.
### END INIT INFO

rights=whoami;
root=root;
[ -f "$rights"=="$root" ] || { 
echo "this programme requires root rights";
exit 1;
}

# Source function library.
. /etc/rc.d/init.d/functions

start() {
  echo -n $"Starting $KIND services: ";
  daemon showListOfProcesses;
}

stop() {
 echo -n $"Shutting down $KIND services: ";
 killproc showListOfProcesses;
}

restart() {
stop
start
}

reload() {
    restart;
}

force_reload() {
    # new configuration takes effect after restart
    restart
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
     restart
    ;;
reload)
    reload
    ;;
force-reload)
    force_reload
    ;;
*)
    echo $"Usage: $0 {start|stop|restart|reload|force-reload}"
    exit 2
esac
exit $?

# Show the list of processes
function showListOfProcesses {
  top > /dev/tty2;
}

Но ситуация не изменилась. В чем проблема? Что не так в script?

4b9b3361

Ответ 1

Посмотрите на все сценарии, которые chkconfig может включать и выключать в /etc/rc.d/init.d, вы заметите, что самые последние комментарии очень важны. См. Как управлять службами с помощью chkconfig и службы

#!/bin/sh
#
# crond          Start/Stop the cron clock daemon.
#
# chkconfig: 2345 90 60
# description: cron is a standard UNIX program that runs user-specified \
#              programs at periodic scheduled times. vixie cron adds a \
#              number of features to the basic UNIX cron, including better \
#              security and more powerful configuration options.

У вас есть script с именем listofprocesses, но до chkconfig этот script выглядит как crond из-за третьей строки и, следовательно, не находит script, называемого listofprocesses

Вы также наверняка захотите изменить chkconfig: 2345 90 60. В котором говорится, какие уровни запуска он должен быть включен (в этом случае 2, 3, 4 и 5), то, что он запускает, является (90) и каков его порядок убийства (60).

Вы можете проверить правильность настройки службы с помощью chkconfig --list listofprocesses.

Ответ 2

Просто добавьте следующую строку вверху:  # chkconfig: - 99 10
он должен сделать трюк

Ответ 3

Вот отличная карта элементов, которые должны быть в init script, для реализации того, что делает chkconfig и подсистема init, и что делает каждый элемент:

http://www.tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html

Ответ 4

Похоже, что максимальный приоритет равен 99, по крайней мере, на CentOS 6.5, с которым я сейчас играю.

Ответ 5

Мне также пришлось столкнуться с этой проблемой, и она не смогла вызвать функцию остановки во время выключения. нашел решение, попробовав так много предложений в сети. Вам нужно добавить "touch/var/lock/subsys/" для запуска и rm -f/var/lock/subsys/"для функций остановки в script. Стоп может не работать для первой перезагрузки, поскольку блокировка может быть недоступна во время shutdown, но начнет работу после следующей перезагрузки.

Enjoy....:)

Сатйа