статус служби судо включає поганий;


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

Що означає bad;частина 2-го рядка виходу? Я отримую це для багатьох служб, наприклад, mysql, winbind, virtualbox, деякі з яких я вже бездоганно використовував (кассандра є свіжою установкою).

Відповіді:


42

Коротка відповідь:

  • bad: Він показує Systemd Unit filesстатус включення
  • ви побачите подібне повідомлення в системах, які використовують systemd
  • ви можете перевірити стан включення за допомогою команди:

    sudo systemctl is-enabled <unit-name>
    

    якщо блок файл є уродженцем сервісу Systemd то це дасть вихід enabled, disabledі т.д. Якщо це не рідний Systemd служби , то він дасть відповідь повідомлень як.

    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
    

    але з командою:

    systemctl status apache2
    or
    service apache2 status
    

    це дає статус bad. (можливо, це тому, що він не в змозі роздрукувати повне повідомлення або розробник вирішив надрукувати bad)

Довга відповідь:

що таке файли системного блоку?

Одиниці - це об'єкти, якими системний вміє керувати. Це в основному стандартизоване представлення системних ресурсів, якими можна керувати набір демонів і маніпулювати наданими утилітами. Його можна використовувати для абстрактних служб, мережевих ресурсів, пристроїв, кріплень файлової системи та ізольованих пулів ресурсів. Ви можете детально прочитати про системні блоки тут і тут

приклад:

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 перевірить, чи apache2це рідна одиниця чи ні. Якщо ні, то він попросить systemd-sysv-generatorгенерувати файл у форматі одиниць, який забезпечує підтримку, подібну до рідних одиниць. У наведеному вище прикладі згенерований файл зберігається в /lib/systemd/system/apache2.service.d/apache2-systemd.conf

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

Примітка. Ви можете знайти генератор за адресою /lib/systemd/system-generators/systemd-sysv-generatorі зможете прочитати більше про це

man systemd-sysv-generator

Основний пункт :

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

якщо ми запустимо команду:

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

ви можете бачити, чи є одиниці, які є рідними для системних подібних даних, sshі dockerу наведеному вище висновку він відображатиметься лише enabled, а для одиниць, які не є власними, apache2але все ще ввімкнено, він надсилає повідомлення з цим, а не друкує badтут через цю умову:

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

Рішення:

статус badне створить проблем (я не впевнений, що це залежить), але він не забезпечить усі функціональні можливості systemctl. ви можете дочекатися наступного випуску того, packageщо спочатку підтримуватиме systemd. або ви можете написати файл одиниці для вашої служби або будь-якого іншого ресурсу, використовуючи задані посилання.

Ви можете детально прочитати про systemd, systemctl та модулі, використовуючи нижче Посилання:

  1. Systemctl

  2. Системні одиниці і Тут

  3. Системний


Дуже дякую за повне та уважне обговорення теми!
матовий

2
Ця відповідь здається дійсно повною, але є дещо заплутаною ... ви, здається, надаєте багато інформації, фактично не заявляючи короткого висновку, що можна було б (можливо) виходити з інформації. Наприклад, прямий, стислий висновок, який я випливаю (з деякою роботою) з вашої короткої відповіді, полягає в тому, що коли служба (системний блок) не є рідною, systemctl не може отримати свій статус включення без перенаправлення на systemd-sysv-install. Команда statusctl з певних причин цього не робить, але натомість повідомляє "погано", тоді як systemctl увімкнено зробить переспрямування, щоб надати вам статус.
EricS

1
Я думаю, що щось із того, що мене бентежило, було якесь формулювання, особливо у початкових пунктах. Я надіслав декілька змін, щоб спробувати покращити їх.
EricS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.