Служба не поддерживает 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?
Ответы
Ответ 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....:)
Сатйа