мне нужно преодолеть 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, чтобы не проверять вызываемые зависимые файлы, которые могут содержать ошибку.
В общем, надеюсь, это избавит других от преследования с этим сообщением об ошибке.