sudoサービスステータスに不良が含まれています。


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などの多くのサービスでこれを利用できます。そのうちのいくつかはすでに完璧に使用しています(cassandraは新規インストールです)。

回答:


42

短い答え:

  • badSystemd Unit files有効化ステータスを示します
  • 使用するシステムでこの種のメッセージが表示されます systemd
  • 次のコマンドを使用して、有効化ステータスを確認できます。

    sudo systemctl is-enabled <unit-name>
    

    そのユニットファイルには、ネイティブにsystemdサービスであれば、それは、出力を与えるenableddisabledそれはのようなメッセージを報告与えるネイティブに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

長い答え:

システムユニットファイルとは何ですか?

ユニットは、systemdが管理方法を知っているオブジェクトです。これらは基本的に、一連のデーモンで管理でき、提供されたユーティリティで操作できるシステムリソースの標準化された表現です。サービス、ネットワークリソース、デバイス、ファイルシステムマウント、分離されたリソースプールを抽象化するために使用できます。systemdユニットについて詳しくは、こちらこちらをご覧ください。

例:

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

単位は次のようにsystemdに自生している場合、あなたは見ることができるsshdocker、上記の出力ではそれだけで表示される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は問題を引き起こしません(依存するかどうかはわかりません)が、のすべての機能を提供しませんsystemctlpackageネイティブにサポートされる次のリリースを待つことができますsystemd。または、指定された参照を使用して、サービスまたはその他のリソースのユニットファイルを作成できます。

以下の参照を使用して、systemd、systemctl、およびunitsについて詳しく読むことができます。

  1. Systemctl

  2. システム化されたユニットここ

  3. システム化


トピックの完全で思慮深い審議に本当に感謝します!
マット

2
この答えは本当に完全に見えますが、ちょっと紛らわしいです...情報から(おそらく)導き出すことができる簡潔な結論を実際に述べずに、たくさんの情報を提供しているようです。たとえば、私があなたの短い答えから(いくつかの作業で)推測する直接的な簡潔な結論は、サービス(systemdユニット)がネイティブでない場合、systemctlはsystemd-sysv-installにリダイレクトせずに有効化ステータスを取得できないということです。何らかの理由でsystemctl statusコマンドはそれを行わず、代わりに「bad」を報告しますが、systemctl is-enabledはリダイレクトを行ってステータスを提供します。
EricS

1
私が混乱させたのは、特に冒頭の箇条書きの言葉遣いだったと思います。改善するためにいくつかの編集を送信しました。
EricS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.