Почему моя служба upstart не запускается при загрузке системы?

Убунту 1

В этой статье мы углубимся в тонкости того, почему служба выскочки может не запускаться при загрузке системы. Upstart — это основанная на событиях замена традиционного демона инициализации, который обрабатывает запуск задач и служб во время загрузки, останавливает их во время завершения работы и контролирует их во время работы системы.

Если ваша служба upstart не запускается при загрузке системы, это может быть вызвано несколькими причинами. Это может быть связано с неправильной конфигурацией в файле upstart, например, с несоблюдением условий запуска. Другие возможные причины включают проблемы с домашним каталогом, сетевым подключением или Vagrant. Устранив неполадки и настроив конфигурацию, вы сможете решить проблему.

Понимание конфигурации Upstart

Давайте начнем с понимания базовой конфигурации службы выскочки. Файл конфигурации службы upstart обычно находится в каталоге /etc/init/. Например, конфигурация службы с именем pms будет определена в файле /etc/init/pms.conf. Пример конфигурации может выглядеть так:

запуск в файловой системе и net-device-up IFACE=eth0 остановка на уровне выполнения [016]
respawn exec /home/administrator/pms-current/PMS.sh

В этой конфигурации:

  • start on filesystem and net-device-up IFACE=eth0 означает, что служба должна запускаться, когда файловая система готова и сетевой интерфейс eth0 включен.
  • остановить на уровне выполнения [016] означает, что служба должна останавливаться, когда система выключается, находится в однопользовательском режиме или перезагружается.
  • respawn позволяет перезапустить службу, если она неожиданно завершает работу.
  • exec /home/administrator/pms-current/PMS.sh — это команда для запуска службы.

Устранение неполадок службы

Если ваша служба не запускается при загрузке, причин может быть несколько. Один из способов устранения неполадок — добавить оператор echo в сценарий PMS.sh, чтобы проверить, выполняется ли он. Если после перезагрузки файл start.log отсутствует, это означает, что служба вообще не запускается.

Вы также можете загрузить систему с флагом –debug и проверить файл /var/log/syslog на наличие соответствующей информации. Команда cat /var/log/syslog | grep init отфильтрует необходимую информацию, связанную с сервисом.

Возможные решения

1. Настройка старта по критериям

Если служба не запускается, это может быть связано с тем, что критерии запуска не выполняются. Вы можете попробовать изменить критерии запуска для запуска в файловой системе и net-device-up IFACE!=lo или запустить в файловой системе и net-device-up IFACE=wlan0, чтобы гарантировать запуск службы после включения сетевых интерфейсов.

2. Использование события static-network-up

Другим решением может быть использование события static-network-up, которое ожидает включения всех статически настроенных сетевых устройств. Это может быть полезно, если ваш сервис зависит от сетевого подключения.

3. Изменение уровня запуска

Вы также можете попробовать использовать запуск на уровне запуска [2345] вместо запуска в файловой системе и сетевого устройства-up IFACE=eth0. Это запустит службу, когда система перейдет в многопользовательский режим, который может больше подходить для вашей службы.

4. Проверка домашнего каталога

Если ваш домашний каталог находится в NFS, root может не иметь к нему доступа во время процесса загрузки. Это может помешать запуску службы. Вы можете попробовать переместить службу из домашнего каталога в другой каталог, принадлежащий пользователю root.

5. Использование chkconfig

Команда chkconfig предоставляет простой инструмент командной строки для управления каталогом /etc/rc.[0-6]Иерархия каталогов .d. Его можно использовать для управления службой и обеспечения ее запуска при загрузке.

6. Проверка на наличие проблем Vagrant

Если вы используете Vagrant, проблема может быть связана с ним. Вы можете попробовать использовать start on vagrant-mounted, чтобы убедиться, что служба запускается после того, как Vagrant смонтирует свои общие папки.

Заключение

В заключение, существует несколько возможных решений проблемы с запуском службы выскочки при загрузке системы. Главное — понять конфигурацию службы и условия, при которых она должна запускаться. Настроив эти параметры и устранив неполадки службы, вы сможете решить проблему.

Вы можете проверить, запускается ли ваша служба upstart при загрузке системы, проверив наличие файла журнала службы, который обычно находится в каталоге /var/log/upstart/. Если файл журнала присутствует, это означает, что служба успешно запущена при загрузке.

Чтобы настроить критерии запуска для службы upstart, вам необходимо изменить файл конфигурации службы, расположенный в каталоге /etc/init/. Найдите строку, начинающуюся с start on, и настройте критерии в соответствии с вашими потребностями. Например, вы можете изменить его для запуска в файловой системе и net-device-up IFACE=wlan0, чтобы гарантировать запуск службы после запуска сетевого интерфейса wlan0.

Да, вы можете использовать событие static-network-up для службы выскочки, если ваша служба зависит от сетевого подключения. Для этого измените запуск службы в строке, чтобы она запускалась при статической сети в файле конфигурации. Это событие ожидает, пока все статически настроенные сетевые устройства будут включены, прежде чем запускать службу.

Чтобы изменить уровень запуска для службы выскочки, вам необходимо изменить запуск в режиме онлайн в файле конфигурации службы. Замените существующие критерии запуском на уровне запуска. [2345] для запуска службы при переходе системы в многопользовательский режим. Обычно на этом уровне запуска запускается большинство служб.

Если ваша служба upstart зависит от вашего домашнего каталога в NFS и препятствует запуску службы при загрузке, вы можете попробовать переместить службу из домашнего каталога в другой каталог, принадлежащий пользователю root. Это гарантирует, что root имеет доступ к необходимым файлам во время процесса загрузки и позволяет успешно запустить службу.

chkconfig не предназначен специально для управления службами выскочки. Он в основном используется для управления каталогом /etc/rc.[0-6]Иерархия каталогов .d, которая управляет службами, запускаемыми на разных уровнях выполнения. Однако, если вы все же хотите использовать chkconfig, вы можете создать соответствующий сценарий в каталоге /etc/init.d/, а затем использовать chkconfig для управления запуском и остановкой на уровне выполнения.

Если вы используете Vagrant и ваша служба upstart не запускается при загрузке, проблема может быть связана с процессом запуска Vagrant. Вы можете попробовать использовать start on vagrant-mounted в файле конфигурации службы, чтобы убедиться, что служба запускается после того, как Vagrant смонтирует свои общие папки. Это гарантирует наличие необходимых файлов для успешного запуска службы.

Похожие записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *