systemctlからすべての有効なサービスをリストする方法は?


279

すべてのenabledサービスを一覧表示するにはどうすればよいsystemctlですか?

systemctlコマンドを実行するだけですべてのサービスが一覧表示されますが、それらのサービスのみを取得したいenabledです。


有効とはどういう意味ですか?実行中のサービスを意味しますか?
ジェン

7
サービスを有効にする@Genは、サービスを開始することとはまったく異なります。をご覧くださいman systemctl
ジョス

魅力的です。最も低い評価の回答は、明らかに最高の回答ではありませんが、最も「正しい」回答です。この優れた質問(およびその回答)は、systemdがUnix&Coの長年の(そして素晴らしい)設計原則にどのように違反しているかの興味深い例です。 / systemctlは、自分が望むことを正確に行うことができます(ほとんどの経験豊富なユーザーは、その完全な肥大化を考慮するだけです)。Linus Torvaldsがsystemdに対して非常に激しく批判的である理由をより明確に理解し始めました。
BISI

回答:


411

systemctl list-unit-files | grep enabled有効なものをすべてリストします。

現在実行しているものが必要な場合は、必要systemctl | grep runningです。

お探しのものを使用してください。有効になっていますが、実行されているわけではありません。実行しているからといって、有効になっているわけではありません。それらは2つの異なるものです。

有効は、システムが次回の起動時にサービスを実行することを意味します。そのため、サービスを有効にした場合でも、手動でサービスを開始するか、再起動してサービスを開始する必要があります。

実行とは、実際に実行されていることを意味しますが、有効になっていない場合、再起動しても再起動しません。


5
この重要な情報を表示するために外部ツール(grep)を使用する必要があるのは面倒です。しかし、方法を教えてくれてありがとう:)
フェリペアルバレス

34
@FelipeAlvarez正しい。しかし、それがLinuxの仕組みです。互いにうまく機能する多くの小さなバイナリ。systemctlは要求されたことを実行し、サービスをリストします。systemrepに組み込まれているフィルタリングコマンドはありません。grepは既に存在し、プログラムの出力でうまく処理できるためです。それは常にそうだった方法です:)
ドリアン

3
私は同意するので、そうあるべきです。しかし、systemdはすでに多くのことを試みているので、なぜ有効なサービスをリストできないのだろうか?
フェリペアルバレス

5
systemctl | grep running私に何もリストしないでください!何かが実行されている場合でも、次のようなステータスのみがリストされますenabled, disabled, masked, static
。– Cirelli94

27
よりシンプル:systemctl list-unit-files --state=running
ウィル

93

man systemctl 状態:

--state=

引数は、単位のカンマ区切りのリストであるべきLOADSUBまたはACTIVE状態。ユニットをリストする場合、指定された状態のユニットのみを表示します。--state=failed失敗したユニットのみを表示するために使用します。

説明:

LOAD:ユニット定義が適切にロードされたかどうかを反映します。
ACTIVE:高レベルのユニットのアクティブ化状態、つまりの一般化SUB
SUB:低レベルのユニットのアクティブ化状態。値はユニットのタイプによって異なります。

ただし、これを使用して以下のenabledユニットのみを表示することもできます:

systemctl list-unit-files --state=enabled

ユニットがenabledそれである場合、システムは起動時にそれを開始します。に設定しenabledても実際には設定されないstartため、手動で設定するか、に設定してからシステムを再起動する必要がありますenabled


5
同時に有効にして起動するには:systemctl enable --now ...
オーレリアンOoms

1
--state=enabledsystemdバージョン215(Raspbian 8 Jessie)では効果がありませんが、systemdバージョン229(Ubuntu 16.04.03 Xenial)では機能します。
mpb

@mpb:ただし、Arch Linuxのバージョン235では完全に正常に動作します。

64

すべてのリストにsystemdしているサービスをstate=activeし、sub=running

systemctl list-units --type=service --state=running

実行中または終了したいずれかのサブおよびサブにsystemdあるすべてのサービスをリストするにはstate=active

systemctl list-units --type=service --state=active

12

まだupstart / initの下にあるこれらを含む「有効な」サービスを表示するには、次を実行します。

systemctl list-unit-files --type service --state enabled,generated

現在実行中のサービスをすべて表示するには、次を実行します。

systemctl list-units --type service --state running

残念ながら、サービスの名前は、二つのリストに異なることができます-例えばsshdsshsyslogrsyslog
OrangeDog

唯一の「非grep」正解。なぜ新興企業が言及されているのかは
わかり

2

すべてのアクティブなサービスと失敗したサービスの概要:

systemctl list-units --type service --state running,failed
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.