Risposta breve:
bad
: Mostra Systemd Unit files
lo stato di abilitazione
- vedrai questo tipo di messaggio sui sistemi che usano
systemd
puoi controllare lo stato di abilitazione usando il comando:
sudo systemctl is-enabled <unit-name>
se quel file di unità è un servizio systemd nativo, verrà generato un output enabled
, disabled
ecc. Se non è un servizio systemd nativo, verrà inviato un messaggio simile a.
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
ma con comando:
systemctl status apache2
or
service apache2 status
dà status bad
. (forse è perché non è in grado di stampare un messaggio completo o lo sviluppatore ha deciso di stampare bad
)
Risposta lunga:
quali sono i file delle unità di sistema?
Le unità sono gli oggetti che systemd sa come gestire. Si tratta sostanzialmente di una rappresentazione standardizzata delle risorse di sistema che possono essere gestite dalla suite di demoni e manipolate dalle utility fornite. Può essere utilizzato per astrarre servizi, risorse di rete, dispositivi, montaggi di filesystem e pool di risorse isolati. Puoi leggere in dettaglio le unità di sistema qui e qui
esempio:
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 verificherà se apache2
è un'unità nativa o meno. In caso contrario, verrà richiesto systemd-sysv-generator
di generare un file in formato unità che fornisce supporto simile alle unità native. Nell'esempio sopra, il file generato viene mantenuto su
/lib/systemd/system/apache2.service.d/apache2-systemd.conf
Drop-In: /lib/systemd/system/apache2.service.d
`-apache2-systemd.conf
Nota: puoi trovare il generatore su /lib/systemd/system-generators/systemd-sysv-generator
e puoi leggere di più al riguardo
man systemd-sysv-generator
Punto principale :
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. | |
+------------------+-------------------------+-----------+
se eseguiamo il 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
puoi vedere se le unità sono native a systemd come ssh
e docker
, nell'output sopra riportato mostrerà solo enabled
, e per le unità che non sono native come apache2
ma che sono ancora abilitate dà messaggi con quello piuttosto che stampare bad
qui a causa di questa condizione:
+------------------+-------------------------+-----------+
|"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. | |
+------------------+-------------------------+-----------+
Soluzione:
lo stato bad
non creerà problemi (non sono sicuro che dipenda) ma non fornirà tutte le funzionalità di systemctl
. puoi aspettare la prossima versione di ciò package
che supporterà nativamente systemd
. oppure puoi scrivere un file di unità per il tuo servizio o qualsiasi altra risorsa utilizzando riferimenti specifici.
Puoi leggere in dettaglio su systemd, systemctl e le unità usando i seguenti riferimenti:
systemctl
Unità Systemd e qui
systemd