l'état du service sudo comprend mauvais;

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

Que représente la bad;partie de la 2e ligne de la sortie? Je reçois cela pour de nombreux services, par exemple, mysql, winbind, virtualbox, dont certains que j'ai déjà utilisés sans problème (cassandra étant une nouvelle installation).

mat
la source

Réponses:

42

Réponse courte:

  • bad: Il montre l' Systemd Unit filesétat d'activation
  • vous verrez ce genre de message sur les systèmes qui utilisent systemd
  • vous pouvez vérifier l'état d'activation à l'aide de la commande:

    sudo systemctl is-enabled <unit-name>
    

    si ce fichier d'unité est un service systemd natif, il donnera une sortie enabled, disabledetc. S'il ne s'agit pas d'un service systemd natif, il donnera alors un message comme.

    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
    

    mais avec commande:

    systemctl status apache2
    or
    service apache2 status
    

    ça donne un statut bad. (c'est peut-être parce qu'il est impossible d'imprimer un message complet ou que le développeur a décidé d'imprimer bad)

Longue réponse:

Que sont les fichiers d'unité système?

Les unités sont les objets que systemd sait gérer. Il s’agit essentiellement d’une représentation normalisée des ressources système pouvant être gérées par la suite de démons et manipulées par les utilitaires fournis. Il peut être utilisé pour résumer des services, des ressources réseau, des périphériques, des montages de système de fichiers et des pools de ressources isolés. Vous pouvez lire en détail sur les unités systemd ici et ici

Exemple:

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 vérifiera s'il apache2s'agit d'une unité native ou non. Sinon, il vous sera demandé systemd-sysv-generatorde générer un fichier au format d'unité offrant un support similaire à celui des unités natives. Dans l'exemple ci-dessus, le fichier généré est conservé à /lib/systemd/system/apache2.service.d/apache2-systemd.conf

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

Note: vous pouvez trouver le générateur à /lib/systemd/system-generators/systemd-sysv-generatoret vous pouvez en savoir plus à ce sujet

man systemd-sysv-generator

Point 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 on lance la commande:

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

vous pouvez voir si les unités sont originaires de systemd comme sshet docker, dans la sortie ci - dessus , il affichera seulement enabled, et pour les unités qui ne sont pas indigènes comme apache2mais lui ont permis donne des messages avec ce plutôt que d' imprimer badici à cause de cette condition:

       +------------------+-------------------------+-----------+
       |"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.                |           |
       +------------------+-------------------------+-----------+

Solution:

le statut badne créera pas de problème (je ne suis pas sûr que cela dépend) mais il ne fournira pas toutes les fonctionnalités de systemctl. vous pouvez attendre la prochaine version qui packagesupportera nativement systemd. ou vous pouvez écrire un fichier d'unité pour votre service ou toute autre ressource en utilisant des références données.

Vous pouvez lire plus en détail sur systemd, systemctl et les unités en utilisant les références ci-dessous:

  1. Systemctl

  2. Unités Systemd et Ici

  3. Systemd

pl_rock
la source
Vraiment merci pour la délibération complète et attentionnée du sujet!
Mat
2
Cette réponse semble vraiment complète mais prête à confusion ... vous semblez fournir beaucoup d'informations sans indiquer la conclusion succincte que l'on pourrait (peut-être) déduire de l'information. Par exemple, la conclusion directe et succincte que je déduis (avec quelques travaux) de votre réponse courte est que lorsqu'un service (unité systemd) n'est pas natif, systemctl ne peut pas obtenir son statut d'activation sans rediriger vers systemd-sysv-install. La commande systemctl status, pour une raison quelconque, ne le fait pas, mais indique plutôt "mauvais", alors que systemctl est activé fera la redirection pour vous donner le statut.
EricS
1
Je pense qu’une partie de ce qui me déroutait était un libellé, en particulier dans les points d’ouverture. J'ai soumis quelques modifications pour essayer d'améliorer.
EricS