ウェブサイト検索

Linuxでsystemctlコマンドを使用してsystemdサービスを管理する方法


Linuxマシンでシステムサービスを管理する方法を学びたいですか?ここでは、systemctlコマンドについて知っておくべきことを説明します。

サービスの管理は、Linuxシステム管理者の主要な責任の一つです。システムサービスの管理方法を知ることは、Linuxユーザーにとっても重要です。なぜなら、彼らも何らかの形でサービスに対処する必要があるかもしれないからです。

このガイドでは、systemctl コマンドを使用して systemd サービスを管理する方法について説明します。

systemdとは何ですか?

SystemdはLinuxオペレーティングシステム用のシステムおよびサービスマネージャです。Ubuntu、Red RHEL、OpenSuse、Arch Linuxなど、多くのLinuxディストリビューションでデフォルトのサービスマネージャです。Systemdは、古いサービスマネージャであるSystem VやUpstartの後継です。

System V サービスマネージャとは異なり、systemd はサービスを並行して起動することで、Linux ブートプロセスを高速化しようとしています。systemd のもう一つのユニークな特徴は、必要に応じてサービスを提供すること、つまりシステムが必要とする時だけサービスの起動を遅延させることができるため、パフォーマンスが大幅に向上する点です。

Systemdはオペレーティングプロセスやサービスの管理に限定されず、ファイルシステムのマウント、ネットワークの監視、タイマーの実行などにも使用できます。

systemctlを使用したsystemdサービスの管理

Linuxでは、systemctlコマンドはsystemdサービスの管理を担当しています。システムに/usr/lib/systemdディレクトリがある場合、ほぼ確実にsystemdサービスマネージャーを使用しています。

システムdサービスマネージャーがシステムで利用可能かどうかを確認するには、次のコマンドのいずれかを実行することもできます。

systemctl --version
systemd --version

サービスのステータスを確認する

システム上の特定のサービスの状態を確認するには、チェックしたいサービスの名前に続けてstatusコマンドを使用してください。

例えば、dockerサービスの状態を確認するには、次のコマンドを実行できます。Dockerは、ソフトウェア開発者が効率的にアプリケーションを構築するために使用する現代の仮想化プログラムです。

systemctl status docker

注意: systemctlのヘルプマニュアルでは、systemctlの後の動詞もコマンドと見なされるため、このガイドでも一貫性のためにその定義に従います。

サービスの状態をリストするだけでなく、ステータスコマンドは、サービスのプロセスID、メモリ使用量、サービスの最近の変更の簡単なリストなどの重要な情報も提供します。

サービスの状態を知ることは、エラーをトラブルシューティングしたり、問題を診断するための主要な方法の一つです。何かが動作していない理由について詳細に入る前に、システム管理者はまずサービスが稼働しているかどうかを確認する傾向があります。

systemctlを使用したサービスの一覧表示

多くの場合、管理を進める前にシステムで利用可能なサービスを確認する必要があります。システム上のすべての利用可能なサービスを一覧表示するには、次のコマンドを使用できます。

systemctl list-unit-files --type service --all

システムで利用可能なサービスをリストすることに加えて、このコマンドはこれらのサービスの状態も表示します。最も一般的な状態には、有効、無効、マスク、などがあります。

サービスの開始と停止

stop コマンドは、もはや実行したくないサービスを停止するために使用されます。たとえば、docker サービスを停止するには:

systemctl stop docker

Linuxマシンでサービスを停止する理由はいくつかあります。未使用のサービスは不必要なシステムリソースを消費し、PCのパフォーマンスに悪影響を及ぼします。

サービスがメモリを消費しすぎている場合は、Linuxでのメモリ管理の他のオプションを検討してください。また、複数のサービスを実行していることは、外部への脆弱性を増やすため、潜在的なセキュリティリスクでもあります。

実行されていないサービスを開始するには、start コマンドを使用します。たとえば、最近停止したdockerサービスを開始するには:

systemctl start docker

サービスを停止してからすぐに再起動したい場合は、次のように再起動コマンドを使用できます。

systemctl restart docker

サービスの有効化と無効化

有効化と開始サービスという用語は、一部のLinuxユーザーにとってしばしば混乱を招きます。サービスを有効化することは、そのサービスがシステムのブート時に利用可能であるべきである、または特定のハードウェアが接続された時にサービスを準備完了にすることを意味します。LinuxでDockerサービスを有効にするには:

systemctl enable docker

サービスがブート時に起動しないようにするには、disable コマンドを使用できます。例えば、docker サービスを無効にするには、次のコマンドを実行します。

systemctl disable docker

systemctlに関するヘルプを得る

システム上でサービスを管理するために使用できる多くの他のコマンドやオプションがあります。方法がわからない場合は、ヘルプコマンドsystemctl --helpを実行するか、systemctlのマニュアルページを参照してください。

man systemctl

多くの場合、システムが起動するといくつかのサービスが始まります。これらのサービスは、システムに必要でない場合、コンピュータの全体的なパフォーマンスに影響を与えます。Linuxでは、このようなスタートアップサービスやデーモンを簡単に停止できます。

関連記事: