Sudo-Service-Status enthält schlecht;

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

Wofür steht der bad;Teil in der 2. Zeile der Ausgabe? Ich bekomme dies für viele Dienste, z. B. MySQL, WinBind, VirtualBox, von denen ich einige bereits fehlerfrei verwendet habe (Cassandra ist eine Neuinstallation).

matt
quelle

Antworten:

42

Kurze Antwort:

  • bad: Zeigt den Systemd Unit filesAktivierungsstatus an
  • Sie werden diese Art von Meldung auf Systemen sehen, die verwenden systemd
  • Sie können den Aktivierungsstatus mit dem folgenden Befehl überprüfen:

    sudo systemctl is-enabled <unit-name>
    

    Wenn diese Unit-Datei ein systemeigener Dienst ist, wird sie ausgegeben enabled , disabledusw. Wenn es keine native systemd Service ist dann geben sie eine Nachricht mitteilen.

    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
    

    aber mit befehl:

    systemctl status apache2
    or
    service apache2 status
    

    es gibt Status bad. (Vielleicht liegt es daran, dass eine vollständige Nachricht nicht gedruckt werden kann oder der Entwickler sich für den Druck entschieden hatbad )

Lange Antwort:

Was sind System-Unit-Dateien?

Einheiten sind die Objekte, die systemd zu verwalten weiß. Dies ist im Grunde eine standardisierte Darstellung von Systemressourcen, die von der Daemon-Suite verwaltet und von den bereitgestellten Dienstprogrammen bearbeitet werden können. Sie können damit Dienste, Netzwerkressourcen, Geräte, Dateisystem-Mounts und isolierte Ressourcenpools abstrahieren. Sie können hier und im Detail über systemd Einheiten lesen hier

Beispiel:

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 prüft, ob apache2es sich um eine native Einheit handelt oder nicht. Ist dies nicht der Fall, werden Sie systemd-sysv-generatoraufgefordert, eine Datei im Einheitenformat zu generieren, die ähnliche Unterstützung bietet wie native Einheiten. Im obigen Beispiel wird die generierte Datei auf gespeichert /lib/systemd/system/apache2.service.d/apache2-systemd.conf

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

Hinweis: Sie finden den Generator unter /lib/systemd/system-generators/systemd-sysv-generatorund können mehr darüber lesen

man systemd-sysv-generator

Hauptpunkt :

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

Wenn wir den Befehl ausführen:

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

Sie können sehen, ob Einheiten systemeigen sind sshund dockerin der obigen Ausgabe nur angezeigt werden enabled, und für Einheiten, die nicht systemeigen sind, apache2aber dennoch aktiviert sind, badwerden aufgrund dieser Bedingung Meldungen angezeigt, anstatt hier gedruckt zu werden:

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

Lösung:

Status badwird kein Problem erstellen (ich bin nicht sicher, ob es davon abhängt), aber es wird nicht alle Funktionen von systemctl. Sie können auf das nächste Release warten, packagedas von Haus aus unterstützt wird systemd. oder Sie können eine Unit-Datei für Ihren Service oder eine andere Ressource unter Verwendung der angegebenen Referenzen schreiben.

Sie können im Detail über systemd, systemctl und units lesen, indem Sie die folgenden Referenzen verwenden:

  1. Systemctl

  2. Systemd Einheiten und hier

  3. Systemd

pl_rock
quelle
Wirklich vielen Dank für die vollständige und rücksichtsvolle Überlegung des Themas!
Matt
2
Diese Antwort scheint wirklich vollständig zu sein, ist aber etwas verwirrend ... Sie scheinen eine Menge Informationen bereitzustellen, ohne die prägnante Schlussfolgerung zu formulieren, dass man (vielleicht) aus den Informationen herleiten könnte. Die direkte, prägnante Schlussfolgerung, die ich (mit etwas Arbeit) aus Ihrer kurzen Antwort ziehe, ist, dass wenn ein Dienst (systemd unit) nicht systemeigen ist, systemctl seinen Aktivierungsstatus nicht erhalten kann, ohne zu systemd-sysv-install umzuleiten. Der Befehl systemctl status tut dies aus irgendeinem Grund nicht, sondern meldet stattdessen "schlecht", wohingegen systemctl aktiviert ist und die Umleitung ausführt, um Ihnen den Status zu geben.
EricS
1
Ich denke, einige verwirrten mich, vor allem in den ersten Punkten. Ich habe einige Änderungen eingereicht, um mich zu verbessern.
EricS