systemd

Failed to start X.service: Unit X.service not found

El fichero está donde crees que está, pero systemd dice que no existe. Casi siempre es que no lo ha leído todavía, o que el nombre no es el que piensas.

Qué comprobar, y en qué orden

En el orden en que lo miramos nosotros. No es un ranking de frecuencia: no publicamos estadísticas que no hemos medido.

  1. 1

    El fichero se ha creado o modificado y systemd no ha recargado su índice.

    Comprobar

    systemctl list-unit-files | grep mi-servicio

    Corregir

    sudo systemctl daemon-reload
  2. 2

    El nombre o la extensión no coinciden. Tiene que terminar en .service, .timer o el tipo que sea.

    Comprobar

    ls -l /etc/systemd/system/ | grep mi-servicio

    Corregir

    sudo mv /etc/systemd/system/mi-servicio /etc/systemd/system/mi-servicio.service
    sudo systemctl daemon-reload
  3. 3

    Está en un directorio que systemd no lee. Las unidades del administrador van en /etc/systemd/system.

    Comprobar

    systemctl show mi-servicio -p FragmentPath

    Corregir

    sudo mv mi-servicio.service /etc/systemd/system/
    sudo systemctl daemon-reload
  4. 4

    Es una unidad de usuario y la estás buscando como unidad del sistema.

    Comprobar

    systemctl --user list-unit-files | grep mi-servicio

    Corregir

    systemctl --user start mi-servicio

Un detalle que ahorra tiempo

systemctl cat es la comprobación definitiva: muestra el fichero que systemd está usando de verdad, con sus overrides. Si no devuelve nada, la unidad no existe para systemd por mucho que el fichero esté en el disco.

Los comandos de esta página se ejecutan en tu servidor y algunos modifican la configuración: léelos antes de pegarlos. Las rutas y los nombres de servicio varían entre distribuciones. Así se elabora este catálogo.