Si instalo un nuevo servicio, luego decido que ya no quiero esa aplicación y la elimino, el servicio todavía aparece en la salida systemctl
como error .
¿De dónde viene esto y cómo puedo eliminarlos a fondo?
Mi receta para la eliminación del servicio (¡tenga cuidado con las rm
declaraciones!)
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
Es posible que el servicio systemd 'envuelva' los scripts de estilo antiguo en /etc/init.d, por lo que es posible que también desee limpiar eso, pero no es donde viven los servicios systemd.
/usr/lib/systemd/system
y también/etc/systemd/system/
. Para referencia, consulte: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…/etc/init.d/[servicename]
antes de corrersystemctl reset-failed
systemctl cat [servicename]
.Probablemente estés buscando
reset-failed
:Desde la página de manual de systemd:
fuente
Parece que lo desinstaló, pero no eliminó el gancho systemd:
# systemctl disable [servicename]
fuente
Agregando a la respuesta de @ mark-lakata y teniendo en cuenta la atención requerida para el
rm
comando.[chkconfig]
puede simplificar el proceso ( haga clic aquí para leer sobre chkconfig )Para repetir la lista de comandos:
systemctl stop [servicename]
chkconfig [servicename] off
systemctl daemon-reload
systemctl reset-failed
Nota: El primer comando es opcional dependiendo de si desea mantener el servicio en ejecución en la sesión actual o no (en cuanto a esta pregunta, se debe usar el comando).
El segundo comando se encarga tanto de deshabilitar como de eliminar (siguiendo los enlaces simbólicos) el servicio.
fuente
chkconfig
fue el comando original para habilitar / deshabilitar los servicios SysVinit. En los sistemas que usansystemd
, puede estar presente como un comando de compatibilidad con versiones anteriores; pero elsystemctl
comando nativo es igual de simple:systemctl disable [servicename]
Eliminar un servicio de systemd:
Systemd usa la unidad (archivo para definir servicios) para eliminar un servicio que la unidad debe eliminarse ... aquí hay una lista de ubicaciones de unidades:
Actualizar systemd:
Servicios fantasma (no encontrado):
Systemd puede enumerar servicios fantasmas (no encontrados) incluso si la unidad se elimina por muchas razones
(*) si un servicio se menciona en otra unidad pero no existe, systemd seguirá enumerando ese servicio con el estado no encontrado incluso si no hay un archivo de unidad ... puede buscar qué unidad está usando ese servicio con una búsqueda de texto y edite esas unidades (no recomendado si planea instalar ese servicio más adelante)
fuente