130

Если я устанавливаю новый сервис, затем решаю, что я больше не хочу это приложение, и удаляю его, сервис по-прежнему отображается в выводе systemctl как ошибка.

Откуда это исходит и как я могу их полностью удалить?

5 ответов5

218

Мой рецепт уничтожения сервиса (будьте осторожны с заявлениями 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.

23

Похоже, вы удалили его, но не удалили хук systemd:

# systemctl disable [servicename]

19

Вы, вероятно, ищете reset-failed:

$ sudo systemctl reset-failed
$

Со страницы справочника systemd:

reset-failed [PATTERN...]

Сбросьте состояние "сбой" указанных блоков или, если имя блока не передано, сбросьте состояние всех блоков. Когда модуль каким-либо образом выходит из строя (то есть процесс завершается с ненулевым кодом ошибки, ненормально завершается или завершается по тайм-ауту), он автоматически переходит в состояние "сбой", а его код выхода и статус записываются администратором для самоанализа до тех пор, пока сервис перезапускается или сбрасывается с помощью этой команды.

4

Добавление к ответу @ mark-lakata и помнить о внимательности, необходимой для команды rm . [chkconfig] может упростить процесс!(нажмите здесь, чтобы прочитать о chkconfig)

Чтобы повторить список команд:

  1. systemctl stop [servicename]
  2. chkconfig [servicename] off
  3. systemctl daemon-reload
  4. systemctl reset-failed

Примечание. 1-я команда является необязательной в зависимости от того, хотите ли вы, чтобы служба работала в текущем сеансе или нет (для этого вопроса следует использовать команду).

Вторая команда заботится как об отключении, так и удалении (по символическим ссылкам) службы.

0

Удаление службы из 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 может перечислить сервисы-призраки (не найдены), даже если устройство удалено по многим причинам

  1. устройство все еще присутствует в одной из системной директории
  2. модуль не выходит, но ссылка на файл все еще присутствует в одном из каталога systemd
  3. услуга используется в других подразделениях

(*) если служба упоминается в другом модуле, но не существует, systemd по-прежнему перечисляет этот сервис с состоянием not-found, даже если нет файла модуля ... вы можете найти, какой модуль использует этот сервис, с помощью текстового поиска и отредактируйте эти блоки (не рекомендуется, если вы планируете установить эту службу позже)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .