У меня есть сервер ClueReleaseManager, который я установил в системе Ubuntu 12.04 от отдельного пользователя (с именем pypi), и я хочу иметь возможность запустить этот сервер при запуске.

Я уже пытался создать простой сценарий bash с некоторыми командами (войти в систему как пользователь pypi , использовать виртуальную среду python, запустить сервер), но это не работает должным образом. Либо терминал выходит из строя, либо когда я пытаюсь узнать статус службы, она запущена, и я вошел в систему как пользователь pypi ...?

Итак, вот вопрос: Какие шаги необходимо предпринять, чтобы убедиться, что служба ClueReleaseManager правильно запускается во время загрузки, и что я могу контролировать (запуск / остановка / ..) во время выполнения, пока служба работает от пользователя pypi?

Дополнительная информация и ограничения:

  • Я хочу сделать это как можно проще
  • Без каких-либо других пакетов / программ для установки
  • Я не знаком со структурой инициализации Ubuntu 12.04
  • Вся информация, которую я нашел в Интернете, очень скудна, сбивает с толку, неверна или не относится к моему случаю запуска службы от имени пользователя, отличного от root .

1 ответ1

1

Базовый скрипт для запуска службы может выглядеть так:

#!/bin/sh

# This is for the 'update-rc.d', so it knows when to start your service.
### BEGIN INIT INFO
# Provides:          your-script
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: a short description
# Description:       a long description
### END INIT INFO

COMMAND="echo -n 'I am: '; whoami"

log () {
    echo "$@"
    logger -p user.info -t "ClueReleaseManager [$$]" "$@"
}

main () {
    case "$1" in
        stop)
        # stop your service
            echo "Stopping"
            ;;
        start)
            # run your service as user pypi
            # doesn't need password as root
            echo "Starting"
            # you probably want to start it in background
            # (don't block the other services)
            (su - pypi -c "$COMMAND") &
            ;;
        restart|force-reload)
        # restart your service
            echo "Restarting"
            ;;
        *)
        # wrong command
            echo "Unknown command: '$1'"
            ;;
    esac
}

# If you want, you can even log the whole.
# Unless you changed it it should go to /var/log/syslog
main "$1" 2>&1 | log


# Better exit with success, not sure if this can screw up Ubuntus boot process.
exit 0

update-rc.d: как это сделать: поместите его в /etc/init.d/your-script (или ссылку на него). Сделайте исполняемый файл и добавьте в службы инициализации:

$ sudo chmod +x /etc/init.d/your-script
$ sudo update-rc.d your-script defaults

Теперь вы можете запускать и останавливать свой сервис:

$ sudo your-script start
$ sudo your-script stop

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .