Назад | Перейти на главную страницу

Почему systemd отклоняет мое имя модуля как «ни действительный идентификатор вызова, ни имя модуля»?

мне нужно преодолеть ExecStart Параметр systemd шаблон. Я подтвердил, что файл модуля существует и проходит проверку. Добавление unique-name@.service.d/override.conf файл хорошо работает на некоторых машинах:

user@prod-west-1604$ systemctl --version | head -1
systemd 229
user@prod-west-1604$ file -b /etc/systemd/system/unique-name@.service
symbolic link to /lib/systemd/system/nginx.service

user@prod-west-1604$ sudo systemctl edit unique-name@.service
# (opens editor as expected)

Однако на машинах с более новыми версиями systemd операция не выполняется:

user@prod-east-1810$ systemctl --version | head -1
systemd 239
user@prod-east-1810$ file -b /etc/systemd/system/unique-name@.service
symbolic link to /lib/systemd/system/nginx.service

user@prod-east-1810$ sudo systemctl edit unique-name@.service
Failed to get the load state of unique-name@.service: Unit name unique-name@.service is neither a valid invocation ID nor unit name.

Зачем?

Это вызвано systemd ошибка, появившаяся в v233 и исправленная в v240. Нет необходимости обновлять systemd, в большинстве случаев systemctl edit в любом случае это не более чем ярлык для следующего:

sudo mkdir -p /etc/systemd/system/unique-name@.service.d/
sudo vim /etc/systemd/system/unique-name@.service.d/override.conf

Файлы переопределения будут работать даже в systemd версии, где systemctl edit команда не работает. Не забудьте применить новую конфигурацию, используя:

sudo systemctl daemon-reload

Я получил такое же сообщение об ошибке "ни действительный идентификатор вызова, ни имя модуля'при запуске службы не удалось, но исправление отличалось от принятого ответа и не имело отношения к ошибке. Сообщение об ошибке было отвлекающим маневром и пустой тратой времени, как я объясню ниже.

Моя проблема была в systemd netfilter-persistent служба. Сообщение об ошибке привело меня к мысли, что возникла проблема с запуском службы systemd-gears. Затем у меня было прозрение: что, если бы был дуфф iptables правило в "rules.v4"служба звонила?"

Ага: служба не запускалась из-за зависимого файла, необходимого для ее создания, в данном случае "rules.v4"произошла ошибка. Этого не было в systemctl status или journalctl -xe. Выражению sed не удалось сопоставить заполнитель и заменить его подсетью. Как только я правильно построил файл правил, сервис заработал правильно.

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

В общем, надеюсь, это избавит других от преследования с этим сообщением об ошибке.