el estado del servicio sudo incluye mal;

32
$ sudo service cassandra status
● cassandra.service - LSB: distributed storage system for structured data
   Loaded: loaded (/etc/init.d/cassandra; bad; vendor preset: enabled)
   Active: active (running) since Wed 2016-10-12 15:54:40 IDT; 4min 4s ago

¿Qué significa la bad;parte en la segunda línea de la salida? Obtengo esto para muchos servicios, por ejemplo, mysql, winbind, virtualbox, algunos de los cuales ya he usado sin problemas (cassandra es una instalación nueva).

mate
fuente

Respuestas:

42

Respuesta corta:

  • bad: Muestra el Systemd Unit filesestado de habilitación
  • verá este tipo de mensaje en los sistemas que usan systemd
  • Puede verificar el estado de habilitación con el comando:

    sudo systemctl is-enabled <unit-name>
    

    si ese archivo de unidad es un servicio systemd nativo, entonces dará salida enabled, disabledetc. Si no es un servicio systemd nativo, entonces le dará un mensaje similar al de informe.

    sudo systemctl is-enabled apache2
    apache2.service is not a native service, redirecting to systemd-sysv-install
    Executing /lib/systemd/systemd-sysv-install is-enabled apache2
    enabled
    

    pero con comando:

    systemctl status apache2
    or
    service apache2 status
    

    da estado bad. (tal vez sea porque no puede imprimir un mensaje completo o el desarrollador decidió imprimir bad)

Respuesta larga:

¿Qué son los archivos de la unidad del sistema?

Las unidades son los objetos que systemd sabe cómo administrar. Estos son básicamente una representación estandarizada de los recursos del sistema que pueden ser administrados por el conjunto de demonios y manipulados por las utilidades proporcionadas. Se puede usar para abstraer servicios, recursos de red, dispositivos, montajes de sistemas de archivos y grupos de recursos aislados. Puede leer en detalle sobre las unidades systemd aquí y aquí

ejemplo:

systemctl status apache2
* apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           `-apache2-systemd.conf
   Active: active (running) since Wed 2016-10-12 14:29:42 UTC; 17s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1027 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)

systemctl verificará si apache2es una unidad nativa o no. De lo contrario, solicitará systemd-sysv-generatorgenerar un archivo en formato de unidad que brinde soporte similar a las unidades nativas. En el ejemplo anterior, el archivo generado se mantiene en /lib/systemd/system/apache2.service.d/apache2-systemd.conf

Drop-In: /lib/systemd/system/apache2.service.d
               `-apache2-systemd.conf

Nota: puede encontrar el generador en /lib/systemd/system-generators/systemd-sysv-generatory puede leer más sobre eso

man systemd-sysv-generator

Punto principal :

is-enabled NAME...
       Checks whether any of the specified unit files are enabled (as with
       enable). Returns an exit code of 0 if at least one is enabled,
       non-zero otherwise. Prints the current enable status (see table).
       To suppress this output, use --quiet.

       Table 1.  is-enabled output
       +------------------+-------------------------+-----------+
       |Name              | Description             | Exit Code |
       +------------------+-------------------------+-----------+
       |"enabled"         | Enabled via             |           |
       +------------------+ .wants/, .requires/     |           |
       |"enabled-runtime" | or alias symlinks       |           |
       |                  | (permanently in         | 0         |
       |                  | /etc/systemd/system/,   |           |
       |                  | or transiently in       |           |
       |                  | /run/systemd/system/).  |           |
       +------------------+-------------------------+-----------+
       |"linked"          | Made available through  |           |
       +------------------+ one or more symlinks    |           |
       |"linked-runtime"  | to the unit file        |           |
       |                  | (permanently in         |           |
       |                  | /etc/systemd/system/    |           |
       |                  | or transiently in       | > 0       |
       |                  | /run/systemd/system/),  |           |
       |                  | even though the unit    |           |
       |                  | file might reside       |           |
       |                  | outside of the unit     |           |
       |                  | file search path.       |           |
       +------------------+-------------------------+-----------+
       |"masked"          | Completely disabled,    |           |
       +------------------+ so that any start       |           |
       |"masked-runtime"  | operation on it fails   |           |
       |                  | (permanently in         | > 0       |
       |                  | /etc/systemd/system/    |           |
       |                  | or transiently in       |           |
       |                  | /run/systemd/systemd/). |           |
       +------------------+-------------------------+-----------+
       |"static"          | The unit file is not    | 0         |
       |                  | enabled, and has no     |           |
       |                  | provisions for enabling |           |
       |                  | in the "[Install]"      |           |
       |                  | section.                |           |
       +------------------+-------------------------+-----------+
       |"indirect"        | The unit file itself is | 0         |
       |                  | not enabled, but it has |           |
       |                  | a non-empty Also=       |           |
       |                  | setting in the          |           |
       |                  | "[Install]" section,    |           |
       |                  | listing other unit      |           |
       |                  | files that might be     |           |
       |                  | enabled.                |           |
       +------------------+-------------------------+-----------+
       |"disabled"        | Unit file is not        | > 0       |
       |                  | enabled, but contains   |           |
       |                  | an "[Install]" section  |           |
       |                  | with installation       |           |
       |                  | instructions.           |           |
       +------------------+-------------------------+-----------+
       |"bad"             | Unit file is invalid or | > 0       |
       |                  | another error occurred. |           |
       |                  | Note that is-enabled    |           |
       |                  | will not actually       |           |
       |                  | return this state, but  |           |
       |                  | print an error message  |           |
       |                  | instead. However the    |           |
       |                  | unit file listing       |           |
       |                  | printed by              |           |
       |                  | list-unit-files might   |           |
       |                  | show it.                |           |
       +------------------+-------------------------+-----------+

si ejecutamos el comando:

sudo systemctl is-enabled ssh
enabled

sudo systemctl is-enabled docker
enabled

sudo systemctl is-enabled apache2
apache2.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install is-enabled apache2
enabled

puede ver si las unidades son nativas de systemd like sshy docker, en el resultado anterior, solo se mostrará enabled, y para las unidades que no son nativas apache2pero que aún están habilitadas, da mensajes con eso en lugar de imprimir badaquí debido a esta condición:

       +------------------+-------------------------+-----------+
       |"bad"             | Unit file is invalid or | > 0       |
       |                  | another error occurred. |           |
       |                  | Note that is-enabled    |           |
       |                  | will not actually       |           |
       |                  | return this state, but  |           |
       |                  | print an error message  |           |
       |                  | instead. However the    |           |
       |                  | unit file listing       |           |
       |                  | printed by              |           |
       |                  | list-unit-files might   |           |
       |                  | show it.                |           |
       +------------------+-------------------------+-----------+

Solución:

el estado badno creará problemas (no estoy seguro de que dependa) pero no proporcionará todas las funciones de systemctl. puede esperar la próxima versión de eso packageque será compatible de forma nativa systemd. o puede escribir un archivo de unidad para su servicio o cualquier otro recurso utilizando las referencias dadas.

Puede leer en detalle acerca de systemd, systemctl y unidades utilizando las siguientes referencias:

  1. Systemctl

  2. Unidades Systemd y Aquí

  3. Systemd

pl_rock
fuente
¡Realmente gracias por la deliberación completa y considerada del tema!
mate
2
Esta respuesta parece realmente completa, pero es un poco confusa ... parece que proporciona mucha información sin declarar realmente la conclusión sucinta de que uno podría (tal vez) derivar de la información. Por ejemplo, la conclusión directa y sucinta que infiero (con algo de trabajo) de su respuesta breve es que cuando un servicio (unidad systemd) no es nativo, systemctl no puede obtener su estado de habilitación sin redirigir a systemd-sysv-install. El comando de estado systemctl por alguna razón no hace eso, sino que informa "incorrecto", mientras que systemctl está habilitado hará la redirección para darle el estado.
EricS
1
Creo que algo de lo que me confundió fueron algunas palabras, especialmente en los puntos iniciales. Envié algunas ediciones para intentar mejorar.
EricS