Не удалось запустить службу systemd во время загрузки.

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

Я пытаюсь запустить службу systemd во время загрузки, как только монтируются записи fstab.

Я следовал указаниям по установке службы systemd для выполнения после монтирования fstab и добавил следующие детали

# cat /etc/fstab
/dev/mmcblk1p11 /data       ext4    defaults        0 2

# systemctl list-units | grep '/data' | awk '{ print $1 }'
data.mount

# cat /usr/lib/systemd/system/data.service
[Unit]
Description=Моя система
After=data.mount

[Service]
Type=oneshot
ExecStartPre=mountpoint -q /data
ExecStart=/usr/etc/data.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Проблема в том, что она не запускается во время загрузки. Однако ручной перезапуск выглядит рабочим.

# systemctl status data.service
  data.service - Моя система
   Loaded: loaded (/usr/lib/systemd/system/data.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

# systemctl enable data.service
Создан символьная ссылка /etc/systemd/system/multi-user.target.wants/data.service → /usr/lib/systemd/system/data.service.
# systemctl restart data.service
         Запуск Моя система...
[  OK  ] Запущена Моя система.

Я что-то упустил?

Две вещи, которые я бы попробовал.
Вы сказали, что ручной запуск работал, но в вашем примере вы показываете

systemctl enable data.service

Вы выполнили команду включения перед тем, как перезапустить? Она должна быть включена, чтобы запускаться при загрузке.

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

After=data.mount 

на

After=data.service 

и посмотрите, что произойдет.

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

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

1. Проверка статуса службы

Вы представили вывод команды systemctl status data.service, который показывает, что служба загружена, но неактивна (inactive (dead)). Это указывает на то, что служба не была успешно активирована при загрузке.

2. Включение службы

Вы упоминаете, что выполнили команду systemctl enable data.service, но важно удостовериться, что эта команда была выполнена до перезагрузки системы. Если команда была выполнена после загрузки, изменения не вступят в силу до следующей загрузки. Убедитесь, что вы проверили символическую ссылку в каталоге /etc/systemd/system/multi-user.target.wants/, чтобы подтвердить, что ваш сервис действительно подключен для автоматического запуска.

3. Порядок запуска

Вы правильно указали After=data.mount. Эта строка указывает, что ваша служба должна начать работу только после того, как точка монтирования /data будет доступна. Однако, если вы измените ее на After=data.service, сервис может не стартовать, так как data.service не может быть запущена до монтирования /data.

4. Ошибки служб

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

journalctl -u data.service

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

5. Состояние mount-единицы

Вы можете также проверить статус единицы монтирования (mount unit) с помощью:

systemctl status data.mount

Убедитесь, что точка монтирования /data успешно монтируется во время загрузки. Если возникает ошибка при монтировании, ваша служба не сможет стартовать.

6. Изменения в конфигурации

Если вы внесли изменения в data.service, убедитесь, что вы перезагрузили конфигурацию systemd с помощью:

systemctl daemon-reload

Это необходимо для применения всех изменений, которые были выполнены.

Заключение

Для успешного разрешения проблемы с запуском службы data.service во время загрузки:

  1. Убедитесь, что служба правильно включена для автоматического запуска.
  2. Убедитесь, что After=data.mount остаётся в конфигурации.
  3. Проверьте журналы служб и статусы монтирования, чтобы выявить возможные причины проблем.
  4. Перезагрузите конфигурацию systemd после внесения изменений.

Следуя этим шагам, вы повысите вероятность успешного запуска вашей службы при загрузке.

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

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