Systemctlを使用してSystemdサービスとユニットを管理する方法
序章
systemd
は、Linuxディストリビューションの新しい標準に広くなっているinitシステムおよびシステムマネージャーです。 systemd
は広く採用されているため、サーバーの管理が非常に簡単になるため、問題を解決する価値があります。 systemd
が提供するパワー、柔軟性、機能をよりよく理解できるようになります。
このガイドでは、initシステムを制御するための中央管理ツールであるsystemctl
コマンドについて説明します。 サービスの管理方法、ステータスの確認方法、システム状態の変更方法、および構成ファイルの操作方法について説明します。
systemd
は多くのLinuxディストリビューションのデフォルトのinitシステムになっていますが、すべてのディストリビューションに普遍的に実装されているわけではないことに注意してください。 このチュートリアルを実行しているときに、端末がエラーbash: systemctl is not installed
を出力する場合は、マシンに別のinitシステムがインストールされている可能性があります。
サービス管理
initシステムの基本的な目的は、Linuxカーネルの起動後に起動する必要のあるコンポーネント(従来は「ユーザーランド」コンポーネントと呼ばれていました)を初期化することです。 initシステムは、システムの実行中の任意の時点でサーバーのサービスとデーモンを管理するためにも使用されます。 それを念頭に置いて、いくつかの基本的なサービス管理操作から始めます。
systemd
では、ほとんどのアクションのターゲットは「ユニット」です。これは、systemd
が管理方法を知っているリソースです。 ユニットは、それらが表すリソースのタイプによって分類され、ユニットファイルと呼ばれるファイルで定義されます。 各ユニットのタイプは、ファイルの最後にあるサフィックスから推測できます。
サービス管理タスクの場合、ターゲットユニットはサービスユニットであり、.service
のサフィックスが付いたユニットファイルがあります。 ただし、ほとんどのサービス管理コマンドでは、.service
サフィックスを省略できます。これは、systemd
は、サービス管理コマンドを使用するときにサービスを操作する可能性があることを認識できるほど賢いためです。
サービスの開始と停止
systemd
サービスを開始するには、サービスのユニットファイルで命令を実行し、start
コマンドを使用します。 root以外のユーザーとして実行している場合は、sudo
を使用する必要があります。これは、オペレーティングシステムの状態に影響を与えるためです。
- sudo systemctl start application.service
前述のように、systemd
は、サービス管理コマンドの*.service
ファイルを検索することを認識しているため、コマンドは次のように入力できます。
- sudo systemctl start application
一般的な管理には上記の形式を使用できますが、わかりやすくするために、操作しているターゲットを明示するために、残りのコマンドには.service
サフィックスを使用します。
現在実行中のサービスを停止するには、代わりにstop
コマンドを使用できます。
- sudo systemctl stop application.service
再起動とリロード
実行中のサービスを再開するには、restart
コマンドを使用できます。
- sudo systemctl restart application.service
問題のアプリケーションが(再起動せずに)構成ファイルを再ロードできる場合は、reload
コマンドを発行して、そのプロセスを開始できます。
- sudo systemctl reload application.service
サービスに構成を再ロードする機能があるかどうかわからない場合は、reload-or-restart
コマンドを発行できます。 これにより、可能な場合は構成がインプレースで再ロードされます。 それ以外の場合は、サービスが再起動されるため、新しい構成が取得されます。
- sudo systemctl reload-or-restart application.service
サービスの有効化と無効化
上記のコマンドは、現在のセッション中にサービスを開始または停止する場合に役立ちます。 systemd
に起動時にサービスを自動的に開始するように指示するには、サービスを有効にする必要があります。
起動時にサービスを開始するには、enable
コマンドを使用します。
- sudo systemctl enable application.service
これにより、システムのサービスファイルのコピー(通常は/lib/systemd/system
または/etc/systemd/system
)から、systemd
が自動起動ファイルを探すディスク上の場所(通常は[ X189X]