Alpine Linux Alpine Linux

Alpine: служба OpenRC не запускается

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

В Alpine вместо systemd используется OpenRC. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика
  5. Причины
  6. Управление автозапуском

#Что означает ошибка

Сообщение
rc-service: service not started / * ERROR: service failed to start

В Alpine Linux службы управляются OpenRC, а не systemd. Сообщение ERROR: ... failed to start или статус crashed/stopped означает, что скрипт /etc/init.d/имя завершился с ошибкой. Журналов systemd нет, поэтому диагностика делается иначе.

Запускайте службу в режиме отладки и читайте syslog.

Проверьте зависимости и уровни запуска.

В Alpine вместо systemd используется OpenRC. Если служба не стартует, смотрите вывод rc-service и журнал приложения, проверяйте зависимости и добавление в автозапуск.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Служба не добавленаНет в runlevel.rc-update add.
Ошибка конфигурацииКонфиг.Проверьте.
Порт занятКонфликт.Освободите.
Нет зависимостиСеть.Добавьте need.

#Пошаговое решение

  1. Проверьте rc-service имя statusВ Alpine с OpenRC проверьте нужную службу командой rc-service ИМЯ status, подставив её настоящее имя. Если не работает, используйте rc-service ИМЯ start только после просмотра логов и конфигурации; для автозапуска применяют rc-update лишь по необходимости. Не используйте systemctl — в типовой Alpine его нет.
  2. Запустите с отладкойУточните точное имя службы командой rc-status и найдите её скрипт в /etc/init.d/. От root либо через doas запустите rc-service -d ИМЯ start, заменив ИМЯ реальным именем из rc-status (например, sshd); параметр -d включает отладочный вывод OpenRC. Не выполняйте такой запуск для критичной удалённой службы SSH без резервного доступа. Сохраните последние строки ошибки и сопоставьте их с конфигурацией службы в /etc/conf.d/ИМЯ или документацией конкретного приложения.
  3. Включите syslog и прочитайте /var/log/messagesЕсли сообщение OpenRC говорит об ошибке службы, проверьте журнал именно этой программы. В Alpine с установленным syslog просмотрите tail -n 100 /var/log/messages; для sshd найдите строки sshd, для nginx — соответствующий журнал nginx, если он настроен. Если /var/log/messages отсутствует, это не обязательно неисправность: в минимальных образах и контейнерах системный журнал может быть не настроен. Сначала уточните, где приложение пишет ошибки (rc-service -d ИМЯ start и его настройки), а уже затем устанавливайте и настраивайте журналирование по документации Alpine.
  4. Проверьте зависимости и портыОткройте /etc/init.d/ИМЯ только для чтения и проверьте строки need, use, before и конфигурацию /etc/conf.d/ИМЯ. Команда rc-status покажет состояние служб, а rc-update show — какие добавлены в уровни запуска. Если программа слушает сетевой порт, при наличии ss выполните ss -lntup и убедитесь, что другой процесс его не занял; ошибки доступа проверяйте по журналу. Не устанавливайте пакеты через apt: в Alpine используется apk. После устранения конкретной причины повторно запустите rc-service ИМЯ start и проверьте rc-service ИМЯ status.
  5. Сбросьте crashedЕсли OpenRC показывает для службы состояние crashed, сначала прочитайте её журнал и устраните причину (ошибка конфигурации, порт, отсутствие каталога или прав). После этого администратор может выполнить rc-service ИМЯ_СЛУЖБЫ zap, подставив реальное имя из rc-status; эта команда сбрасывает ошибочное состояние OpenRC, но не чинит сам сервис. Затем запустите rc-service ИМЯ_СЛУЖБЫ start и проверьте status. Не сбрасывайте состояние неизвестных системных служб без журнала ошибки.
  6. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    Сервис nginx из примера не должен запускаться и добавляться в автозапуск для любой службы OpenRC.
    rc-status
    rc-status -a

#Диагностика

Статус: rc-service имя status, список: rc-status -a. Запуск с выводом: rc-service имя start и проверка ошибок. Отладка скрипта: sh -x /etc/init.d/имя start. Журнал: установите syslog (apk add busybox-syslogd && rc-update add syslog boot && rc-service syslog start) и смотрите /var/log/messages. Включите вывод в файл для конкретной службы через output_log="/var/log/имя.log" в /etc/conf.d/имя (если поддерживается).

#Причины

Нет зависимости (need net) — сеть не поднята: rc-service networking start. Неверная конфигурация приложения: проверьте файл в /etc/conf.d/имя и конфигурацию самой программы. Занят порт: netstat -tlnp (пакет net-tools) или ss -ltnp. Права/пользователь: проверьте command_user в init-скрипте. Нет PID-каталога: mkdir -p /run/имя. Для служб с запуском из контейнеров OpenRC не работает без openrc: используйте docker run с CMD.

#Управление автозапуском

Добавить в автозапуск: rc-update add имя default, удалить: rc-update del имя. Список: rc-update show. Перезапуск зависимостей: rc-service имя restart. Сбросить статус crashed: rc-service имя zap. Установка служб: apk add имя-openrc — отдельный пакет со скриптом (например, nginx-openrc, sshd через openssh). Документация: wiki.alpinelinux.org.

Linux · Терминал (Bash)Команда
Просмотр состояния службы (nginx здесь только пример). zap принудительно сбрасывает состояние OpenRC и не должен выполняться автоматически; для другого сервиса используйте фактическое имя.
rc-status -a
rc-service nginx status

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.