システム管理者は、おそらく多くのサービスを扱っています。 毎日。
Linuxでは、サービス 多くの異なる目的で使用されます。
これらは、マシンでSSHサーバーを起動するために使用される場合もあれば、特定の時間または日にいくつかの操作を実行するために使用される場合もあります。
Debianベースのディストリビューションを使用している場合でもRedHatベースのディストリビューションを使用している場合でも、サービスのクエリは非常に似ています。
ただし、使用しているディストリビューション、より具体的には初期化システム(initまたはsystemd)を考えると、異なるコマンドを使用する必要がある場合があります。
このチュートリアルでは、システムマネージャーを指定して、Linuxマシン上のすべてのサービスを一覧表示する方法を学習します。
使用したシステムマネージャーを特定する
ご存知かもしれませんが、最近のディストリビューションではSystemdシステムマネージャーが使用されています。 。
ただし、常にそうであるとは限りません。以前は、ほとんどのディストリビューションでSysVinitシステムマネージャーが使用されていました。
結果として、Linuxシステムでサービスを管理する方法は実際には2つあります。
サービスを一覧表示するコマンドを学習する前に、現在使用しているシステムマネージャーを知っておく必要があります。
現在のシステムマネージャーを確認する最も簡単な方法は、「pstree」コマンドを使用して、システムで実行された最初のプロセスを確認することです。
$ pstree | head -n 5
「systemd」が表示された場合 「、それは明らかにあなたが現在systemdを使用していることを意味します。ただし、「 init」が表示された場合 「、SysVinitを使用していることを意味します。
古いinitシステムをまだ使用しているUbuntu14.04では、「pstree」は次のようになります。
systemctlを使用してサービスを一覧表示する
systemdシステムを使用している場合、Linuxでサービスを一覧表示する最も簡単な方法は、「systemctl」コマンドに続けて「list-units」を使用することです。結果をサービスのみに制限するために、「– type=service」オプションを指定できます。
$ systemctl list-units --type=service
デフォルトでは、このコマンドは、システムでアクティブなサービスまたは失敗したサービスのみを表示します。上のスクリーンショットでは、ほとんどのサービスがアクティブですが、logrotateサービス(赤で強調表示)は失敗としてマークされています。
すばらしいです。Linuxサーバーにサービスを簡単に一覧表示する方法を学びました。
ただし、お気づきかもしれませんが、すべてのサービスにアクセスできるわけではありません。非アクティブなサービスについてはどうでしょうか。起動時にsystemdによってロードされなかったサービスはどうですか?
list-unitsを使用してLinux上のすべてのサービスを一覧表示する
アクティブと非アクティブを意味するすべてのサービスを一覧表示するには、「systemctllist-units」コマンドに続けて「–all」オプションを使用する必要があります。
同様に、タイプフィルタを使用することによってのみ、結果をサービスに制限できます。
$ systemctl list-units --type=service --all
ご覧のとおり、非アクティブなサービスもリストされています。これは、サービスを作成してリストで管理している場合に便利です。
この場合、ロードされたサービスのみがリストされます。起動時に、systemdはユニットファイルをロードし、システムで使用されないことが判明した場合、特定のサービスをロードしないことを選択する場合があります。
結果として、「ロード済み」の間には実際の違いがあります 」と「インストール済み 」サービス。 「インストール済み」サービスとは、ユニットファイルが対応するパスにあることを意味します。
州ごとのサービスの一覧表示
場合によっては、失敗したサービスのみに関心があることがあります。そのために、systemctlコマンドのオプションとして探している状態を指定できます。
$ systemctl list-units --state=<state>
$ systemctl list-units --state=<state1>,<state2>
「状態」は、次のいずれかの値になります:アクティブ、非アクティブ、アクティブ化、非アクティブ化、失敗、見つからない、または無効。
たとえば、「失敗した」サービスのみに関心がある場合は、次のコマンドを実行します
$ systemctl list-units --state=failed
list-unit-filesを使用してすべてのサービスファイルを一覧表示する
最後に、「ロード済み」に関心がある場合 「、「インストール済み 、「無効 」および「有効 」サービスファイルには、かなり便利な別のコマンドがあります。
使用可能なすべてのサービスファイルを一覧表示するには、「systemctl」コマンドに続けて「list-unit-files」を使用する必要があります。オプションで、「– type=service」オプションを使用してタイプを指定できます。
$ systemctl list-unit-files --type=service
または、「grep」コマンドを使用して、サービスファイルを含む可能性のあるシステム上の特定のパスを検索することもできます。
$ ls -l /etc/systemd/system /usr/lib/systemd/service | egrep .service$
おめでとうございます。システムでsystemdを使用している場合に、サービスを一覧表示する方法を学びました。
サービスを使用してサービスを一覧表示する
SystemV initシステムを使用している場合にLinuxでサービスを一覧表示する最も簡単な方法は、「service」コマンドに続けて「–status-all」オプションを使用することです。このようにして、システム上のサービスの完全なリストが表示されます。
$ service --status-all
ご覧のとおり、各サービスの前には括弧の下に記号が付いています。これらの記号は:
を意味します- + :サービスが実行中であることを意味します;
- – :サービスが実行されていないことを意味します まったく;
- ? :Ubuntuが伝えることができなかったことを意味します サービスが実行されているかどうか。
では、なぜ一部のサービスは実行されているかどうかを判断し、一部のサービスは実行できないのですか?
それはすべて、initスクリプトの実装に帰着します。たとえば、udevスクリプトなどの一部のスクリプトでは、「ステータス 」コマンドが実装されています。
これは、「 dns-clean」には当てはまりません。 たとえば、このサービスにクエリを実行するときに疑問符が表示されるのは、このスクリプトです。
フォルダ内のSysVinitサービスを一覧表示する
現在のサービスのリストを一覧表示する別の方法は、Linuxシステム上のすべてのスクリプトを含むフォルダー、つまり「/etc/init.d」で「ls」コマンドを使用することです。
$ ls -l /etc/init.d/*
結論
このチュートリアルでは、Linuxシステムでサービスを簡単に一覧表示する方法を学びました。 systemdとSysVinitのどちらを使用しているか。
独自のサービスの作成に興味がある場合は、次のリソースを参照することをお勧めします。それらはそれを正しく達成するために本当に役立つかもしれません。
- initシステムの起動スクリプトを作成する;
- systemdを使用して起動時にサービスを開始します;
Linuxシステム管理に興味がある場合 、このテーマに関する完全なセクションがWebサイトにあるので、必ずチェックしてください。