Если я устанавливаю новый сервис, затем решаю, что я больше не хочу это приложение, и удаляю его, сервис по-прежнему отображается в выводе systemctl
как ошибка.
Откуда это исходит и как я могу их полностью удалить?
Мой рецепт уничтожения сервиса (будьте осторожны с заявлениями rm
!)
systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] symlinks that might be related
systemctl daemon-reload
systemctl reset-failed
Возможно, что служба systemd «оборачивает» сценарии старого стиля в /etc/init.d, так что вы можете захотеть это тоже почистить, но это не то место, где живут службы systemd.
Похоже, вы удалили его, но не удалили хук systemd:
# systemctl disable [servicename]
Вы, вероятно, ищете reset-failed
:
$ sudo systemctl reset-failed
$
Со страницы справочника systemd:
reset-failed [PATTERN...]
Сбросьте состояние "сбой" указанных блоков или, если имя блока не передано, сбросьте состояние всех блоков. Когда модуль каким-либо образом выходит из строя (то есть процесс завершается с ненулевым кодом ошибки, ненормально завершается или завершается по тайм-ауту), он автоматически переходит в состояние "сбой", а его код выхода и статус записываются администратором для самоанализа до тех пор, пока сервис перезапускается или сбрасывается с помощью этой команды.
Добавление к ответу @ mark-lakata и помнить о внимательности, необходимой для команды rm
. [chkconfig]
может упростить процесс!(нажмите здесь, чтобы прочитать о chkconfig)
Чтобы повторить список команд:
systemctl stop [servicename]
chkconfig [servicename] off
systemctl daemon-reload
systemctl reset-failed
Примечание. 1-я команда является необязательной в зависимости от того, хотите ли вы, чтобы служба работала в текущем сеансе или нет (для этого вопроса следует использовать команду).
Вторая команда заботится как об отключении, так и удалении (по символическим ссылкам) службы.
Удаление службы из systemd:
Systemd использует unit (файл для определения сервисов), чтобы удалить сервис, который необходимо удалить ... Вот список местоположений юнитов:
/etc/systemd/system/ (and sub directories)
~/.config/systemd/user/ (and sub directories)
/usr/lib/systemd/ (and sub directories)
/etc/init.d/ (Converted old service system)
Обновить systemd:
systemctl daemon-reload
systemctl reset-failed
Призрачные сервисы (не найдены):
Systemd может перечислить сервисы-призраки (не найдены), даже если устройство удалено по многим причинам
(*) если служба упоминается в другом модуле, но не существует, systemd по-прежнему перечисляет этот сервис с состоянием not-found, даже если нет файла модуля ... вы можете найти, какой модуль использует этот сервис, с помощью текстового поиска и отредактируйте эти блоки (не рекомендуется, если вы планируете установить эту службу позже)