el estado del servicio sudo incluye mal;

24
$ 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 parte bad; en la 2ª línea de la salida? Lo obtengo para muchos servicios, p. mysql, winbind, virtualbox, algunos de los cuales ya he utilizado sin problemas (cassandra es una nueva instalación).

    
pregunta matt 12.10.2016 - 13:02

1 respuesta

34

Respuesta corta:

  • bad : Muestra Systemd Unit files estado de habilitación
  • verá este tipo de mensaje en sistemas que usan systemd
  • puede verificar el estado de activación mediante el comando:

    sudo systemctl is-enabled <unit-name>
    

    si ese archivo de unidad es un servicio systemd nativo, dará salida enabled , disabled , etc. Si no es un servicio systemd nativo, dará un mensaje de informe como

    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 el estado bad . (Tal vez es 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. Estas 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 del sistema 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 comprobará si apache2 es una unidad nativa o no. Si no, entonces preguntará systemd-sysv-generator para generar un archivo en formato de unidad que proporcione soporte similar a las unidades nativas. En el ejemplo anterior, el archivo generado se guarda en /lib/systemd/system/apache2.service.d/apache2-systemd.conf

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

Nota: puedes encontrar el generador en /lib/systemd/system-generators/systemd-sysv-generator y puedes 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

puedes ver si las unidades son nativas de systemd como ssh y docker , en el resultado anterior solo se mostrará enabled , y para las unidades que no son nativas como apache2 pero aún está activada, da mensajes con eso en lugar de imprimir bad aquí 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:

estado bad no creará un problema (no estoy seguro de que eso dependa) pero no proporcionará toda la funcionalidad de systemctl . puede esperar la próxima publicación de ese package que admitirá de forma nativa systemd . o puede escribir un archivo de unidad para su servicio o cualquier otro recurso usando referencias dadas.

Puede leer en detalle sobre systemd, systemctl y unidades usando a continuación Referencias:

  1. Systemctl

  2. Unidades sistemadas y Aquí

  3. Systemd

respondido por el pl_rock 12.10.2016 - 16:05

Lea otras preguntas en las etiquetas