o status do serviço sudo inclui ruim;

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

O que representa a bad;parte na 2ª linha da saída? Eu recebo isso para muitos serviços, por exemplo, mysql, winbind, virtualbox, alguns dos quais eu já usei na perfeição (cassandra sendo uma instalação nova).

mate
fonte

Respostas:

42

Resposta curta:

  • bad: Mostra o Systemd Unit filesstatus de ativação
  • você verá esse tipo de mensagem em sistemas que usam systemd
  • você pode verificar o status da ativação usando o comando:

    sudo systemctl is-enabled <unit-name>
    

    se esse arquivo de unidade for um serviço systemd nativo, ele fornecerá saída enabled, disabledetc. Se não for um serviço systemd nativo, enviará uma mensagem como reportar.

    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
    

    mas com o comando:

    systemctl status apache2
    or
    service apache2 status
    

    isso dá status bad. (talvez seja porque não é possível imprimir uma mensagem completa ou o desenvolvedor decidiu imprimir bad)

Resposta longa:

o que são arquivos de unidade do sistema?

Unidades são os objetos que o systemd sabe gerenciar. Essas são basicamente uma representação padronizada dos recursos do sistema que podem ser gerenciados pelo conjunto de daemons e manipulados pelos utilitários fornecidos. Ele pode ser usado para abstrair serviços, recursos de rede, dispositivos, montagens de sistema de arquivos e conjuntos de recursos isolados. Você pode ler em detalhes sobre as unidades systemd aqui e aqui

exemplo:

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)

O systemctl irá verificar se apache2é uma unidade nativa ou não. Caso contrário, será solicitado systemd-sysv-generatorque você gere um arquivo no formato de unidade que ofereça suporte semelhante às unidades nativas. No exemplo acima, o arquivo gerado é mantido em /lib/systemd/system/apache2.service.d/apache2-systemd.conf

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

Nota: você pode encontrar o gerador em /lib/systemd/system-generators/systemd-sysv-generatore você pode ler mais sobre isso

man systemd-sysv-generator

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

se executarmos o 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

você pode ver se as unidades são nativas do sistema sshe docker, na saída acima, ele será exibido apenas enabled; para as unidades que não são nativas, apache2mas ainda ativadas, ele envia mensagens com isso em vez de imprimir badaqui devido a esta condição:

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

Solução:

status badnão criará problema (não tenho certeza de que depende), mas não fornecerá todas as funcionalidades do systemctl. você pode esperar pelo próximo lançamento daquilo packageque oferecerá suporte nativo systemd. ou você pode gravar um arquivo de unidade para o seu serviço ou qualquer outro recurso usando as referências fornecidas.

Você pode ler em detalhes sobre systemd, systemctl e unidades usando as referências abaixo:

  1. Systemctl

  2. Systemd unidades e Aqui

  3. Systemd

pl_rock
fonte
Muito obrigado pela deliberação completa e atenciosa do tópico!
Matt
2
Essa resposta parece realmente completa, mas é meio confusa ... você parece fornecer muitas informações sem realmente declarar a conclusão sucinta de que alguém poderia (talvez) derivar delas. Por exemplo, a conclusão direta e sucinta que deduzo (com algum trabalho) da sua resposta curta é que quando um serviço (unidade systemd) não é nativo, o systemctl não pode obter seu status de ativação sem redirecionar para systemd-sysv-install. O comando systemctl status, por algum motivo, não faz isso, mas relata "incorreto", enquanto o systemctl está ativado fará o redirecionamento para fornecer o status.
Erics
1
Eu acho que algumas das coisas que me confundiram foram algumas palavras, especialmente nos pontos iniciais. Enviei algumas edições para tentar melhorar.
Erics