systemctl показывает файл службы не найден, даже если файл.service присутствует
Я сталкиваюсь со странной проблемой. У меня есть служебный файл для запуска пользовательского приложения. Команда systemctl показывает LOAD как не найденный
ресурс-сервис-prod-prod.service не найден активный запущенный ресурс-сервис-prod-prod.service
однако файл отображается в
ls -lrt /etc/systemd/system
lrwxrwxrwx 1 root root 96 Mar 5 2017 resource-service-prod.service -> /opt/app/daps-prod/resource-service/bin/resource-service-prod-prod.service
статус службы отображается как запущенный, но загруженный: не найден (причина: такого файла или каталога нет)
sudo service resource-service-prod status
Redirecting to /bin/systemctl status resource-service-prod.service
● resource-service-prod-prod.service
Loaded: not-found (Reason: No such file or directory)
Active: active (running) since Thu 2018-12-20 06:40:37 CST; 3 weeks 0 days ago
Main PID: 12888 (node)
CGroup: /system.slice/resource-service-prod-prod.service
├─12888 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12923 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12924 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12930 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12936 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12942 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12943 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12949 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12960 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12961 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12972 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
├─12978 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
└─12984 /usr/bin/node /opt/app/daps-prod/resource-service/source/app.js
Приложение останавливается при выдаче сервисной остановки, но при попытке запуска снова не будет (так как файл не найден). Делать systemctl daemon-reload
помогает запустить сервис и файл сервиса отображается как загруженный. Есть идеи, почему такое поведение?
Фактический файл службы находится на отдельном монтировании, и это символическая ссылка в /etc/systemd/system
2 ответа
Я знаю, что это несколько месяцев, но для записи, также проверьте файл конфигурации для службы. Вы можете получить это сообщение, потому что модуль зависимости не был найден. Похоже, что Systemd не дает достаточно подробностей в сообщении об ошибке, где он различает основной блок, который вы запускаете, и зависимый блок. Иногда он будет обходить эти проблемы при загрузке, а затем завершится неудачей, если вы сделаете это вручную, что довольно безумно.
Возможно, файл службы был удален во время работы службы. Вам может понадобиться запустить systemctl daemon-reload
, Конечно, проверьте файл /opt/app/daps-prod/resource-service/bin/resource-service-prod-prod.service
на самом деле там.
[root@storage system]# systemctl status smb.service
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
...
[root@storage system]# systemctl daemon-reload
[root@storage system]# systemctl status smb.service
● smb.service
Loaded: not-found (Reason: No such file or directory)
...
[root@storage system]# ln -s /opt/smb.service /usr/lib/systemd/system/smb.service
[root@storage system]# systemctl status smb.service
● smb.service
Loaded: not-found (Reason: No such file or directory)
...
[root@storage system]# systemctl daemon-reload
[root@storage system]# systemctl status smb.service
● smb.service - Samba SMB Daemon
Loaded: loaded (/opt/smb.service; enabled; vendor preset: disabled)
Я столкнулся с аналогичной проблемой в Amazon Linux.
Следующее сработало для меня
- Вместо создания служебного файла непосредственно в
/etc/systemd/system/multi-user.target.wants/
, Я создал служебный файл в/usr/lib/systemd/system/
, нравиться/usr/lib/systemd/system/abc.service
- Затем я создал ссылку -
ln -sf /usr/lib/systemd/system/cerncshnbdr01-abc.service /etc/systemd/system/multi-user.target.wants/abc.service
- Затем я смог включить службу -
systemctl enable abc.service