Регистрация службы init.d

Вопрос или проблема

Пытаюсь зарегистрировать сервис в /etc/init.d, но не могу запустить его с помощью service myservice start и при загрузке

Исполняемый файл:

#!/bin/sh
# kFreeBSD не принимает скрипты как интерпретаторы, используйте #!/bin/sh и sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Пример initscript
# Description:       Этот файл должен быть использован для создания скриптов, которые
#                    помещаются в /etc/init.d. Этот пример запускает
#                    один форк-демон, способный записывать pid
#                    файл. Чтобы получить другие поведения, реализуйте
#                    do_start(), do_stop() или другие функции для
#                    переопределения значений по умолчанию в /lib/init/init-d-script.
### END INIT INFO

# Автор: Foo Bar <[email protected]>
#
# Пожалуйста, удалите строки "Автор" выше и замените их
# на свое имя, если вы копируете и модифицируете этот скрипт.

DESC="запись белого радио"
DAEMON=/usr/bin/streamripper

case "$1" in
start)  log_daemon_msg "Запуск записи белого радио" "streamripper"
        sudo -u ubuntu /usr/bin/streamripper http://184.154.58.146:29378/ch18_56.mp3 --quiet -s -a -d ~ &

        ;;
stop)   log_daemon_msg "Остановка записи белого радио" "streamripper"
        pkill streamripper
        RETVAL=0

        log_end_msg $RETVAL
        ;;
restart) log_daemon_msg "Перезапуск записи белого радио" "streamripper"
        $0 stop
        $0 start
        ;;
*)

esac
exit 0

Пытаюсь зарегистрировать это с помощью

sudo update-rc.d recordbyradio defaults

и команда возвращает результат без каких-либо сообщений, независимо от того, сколько раз я ее выполняю

потом

sudo service recordbyradio start 

также возвращает результат без сообщений и ничего не запускает.

/etc/init.d/recordbyradio start

тем не менее работает отлично

Версия Ubuntu (работает в EC2):

Нет доступных модулей LSB.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial

Не вижу в вашем посте: update-rc.d recordbyradio enable

Возможно, сервис не включен, и поэтому он не работает.

Команда update-rc.d должна создать символические ссылки для вас:

  • /etc/rc0.d/K00recordbyradio
  • /etc/rc1.d/K00recordbyradio
  • /etc/rc2.d/S99recordbyradio
  • /etc/rc3.d/S99recordbyradio
  • /etc/rc4.d/S99recordbyradio
  • /etc/rc5.d/S99recordbyradio
  • /etc/rc6.d/K00recordbyradio

все эти ссылки должны указывать на ваш скрипт.

Ваш скрипт также должен быть исполняемым, поэтому chmod +x /etc/init.d/recordbyradio.

Ответ или решение

Регистрация службы в init.d на Ubuntu

Регистрация службы в /etc/init.d для ее последующего управления с помощью команд, таких как service, может быть не столь интуитивной, особенно если вы сталкиваетесь с неудачами при запуске. Ниже представлены шаги и рекомендации для успешной регистрации и запуска вашего скрипта службы recordbyradio на Ubuntu 16.04.4 LTS.

Шаг 1: Проверка скрипта службы

Прежде всего, убедитесь, что ваш скрипт службы корректен. Рассмотрим ваш текущий исполняемый файл:

#!/bin/sh
# Explanation for kFreeBSD
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:          recordbyradio
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Запись с радиопотока
# Description:       Эта служба запускает streamripper для записи радиопотока
### END INIT INFO

# Дальнейшие параметры
DESC="bel radio recording"
DAEMON=/usr/bin/streamripper

case "$1" in
start)  
        log_daemon_msg "Starting bel radio recording" "streamripper"
        sudo -u ubuntu /usr/bin/streamripper http://184.154.58.146:29378/ch18_56.mp3 --quiet -s -a -d ~ &
        RETVAL=$?
        log_end_msg $RETVAL
        ;;
stop)   
        log_daemon_msg "Stopping bel radio recording" "streamripper"
        pkill streamripper
        RETVAL=$?
        log_end_msg $RETVAL
        ;;
restart) 
        log_daemon_msg "Restarting bel radio recording" "streamripper"
        $0 stop
        $0 start
        ;;
*)
        echo "Usage: $0 {start|stop|restart}" >&2
        exit 1
        ;;
esac
exit 0

Шаг 2: Убедитесь в исполнимости скрипта

Для того чтобы система могла запускать этот скрипт, он должен быть исполнимым. Выполните команду:

sudo chmod +x /etc/init.d/recordbyradio

Шаг 3: Регистрация скрипта службы

Вам нужно зарегистрировать вашу службу с помощью update-rc.d. Это создаст необходимые символические ссылки в соответствующих директориях:

sudo update-rc.d recordbyradio defaults

Однако, как было отмечено, если команда update-rc.d не возвращает никаких сообщений, это может означать, что служба не была зарегистрирована корректно. Вы можете использовать следующую команду, чтобы активировать службу:

sudo update-rc.d recordbyradio enable

Шаг 4: Проверка символических ссылок

После выполнения предыдущей команды убедитесь, что для вашей службы созданы необходимые символические ссылки. Введите:

ls /etc/rc*.d | grep recordbyradio

Это должно вернуть несколько строк с путями к ссылкам, например:

  • /etc/rc0.d/K00recordbyradio
  • /etc/rc1.d/K00recordbyradio
  • /etc/rc2.d/S99recordbyradio, и так далее.

Шаг 5: Тестирование службы

Теперь, когда служба зарегистрирована, вы должны быть в состоянии запустить ее с помощью:

sudo service recordbyradio start

Шаг 6: Проверка сервиса

Если служба не запускается, но работает через `/etc/init.d“:

/etc/init.d/recordbyradio start

это может указывать на проблемы с конфигурацией. Вам следует проверить системные логи:

sudo journalctl -xe

Заключение

Следование вышеуказанным шагам должно помочь вам успешно зарегистрировать и запустить вашу службу в init.d на Ubuntu. Убедитесь, что ваш скрипт службы прописан корректно и имеет все необходимые функциональные возможности для управления процессами, такими как запуск и остановка. При возникновении дополнительных вопросов рекомендуем обращаться к документации Ubuntu или сообществам разработчиков.

Оцените материал
Добавить комментарий

Капча загружается...