Целевой файл Systemd запускается даже после запуска службы After = - PullRequest
0 голосов
/ 21 октября 2019

Хорошо, прежде всего, я хочу добиться, чтобы служба systemd не собирала мусор, если она остановлена ​​и не включена по умолчанию. Мне это нужно из-за текущей проблемы с экспортером узлов из Prometheus для целей мониторинга.

Я уже достиг своей цели, но я не уверен, почему она работает и возможны ли побочные эффекты.

Так, в качестве примера, я установил ntp на свою Ubuntu 18.03, отключил службуи остановил это. Теперь я хотел, чтобы мой экспортер узлов показал мне, что ntp.service неактивен, но сборщик мусора ntp get собирается systemd. Я читал, что это можно предотвратить, используя в этом случае ntp в качестве зависимости. Использование Wants= не помогает, так как это приведет к перезапуску моего ntp, если перезапустится моя зависимая служба. Поэтому я немного поэкспериментировал и создал файл test.target примерно так:

#/etc/systemd/system/test.target
[Unit]
Description=Testing purpose
After=ntp.service

[Install]
WantedBy=Multi-user.target

Я включил службу, запустил ее с отключенным ntp и остановил. Теперь это мой актуальный вопрос. Мой файл test.target включается и запускается без проблем, даже если ntp.service не запущен. Интересно, что он также делает то, что я хочу, ntp не собирает мусор, даже если он отключен и остановлен.

Так что я действительно хотел бы знать, почему это работает, почему After= get игнорируется?

1 Ответ

0 голосов
/ 31 октября 2019

After= не игнорируется, это заставляет systemd загрузить модуль (если он еще не загружен), а также предотвращает сборку мусора. After= не означает, что он запустится ntp.service, для этого вам следует использовать Requires=.

Проверка Сбор мусора блока , Требуется , и * После 1013 *.

...