Respuesta corta:
bad
: Muestra el Systemd Unit files
estado 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
, disabled
etc. 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 apache2
es una unidad nativa o no. De lo contrario, solicitará systemd-sysv-generator
generar 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-generator
y 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 ssh
y docker
, en el resultado anterior, solo se mostrará enabled
, y para las unidades que no son nativas apache2
pero que aún están habilitadas, 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:
el estado bad
no 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 package
que 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:
Systemctl
Unidades Systemd y Aquí
Systemd