序章

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を使用する必要があります。これは、オペレーティングシステムの状態に影響を与えるためです。

  1. sudo systemctl start application.service

前述のように、systemdは、サービス管理コマンドの*.serviceファイルを検索することを認識しているため、コマンドは次のように入力できます。

  1. sudo systemctl start application

一般的な管理には上記の形式を使用できますが、わかりやすくするために、操作しているターゲットを明示するために、残りのコマンドには.serviceサフィックスを使用します。

現在実行中のサービスを停止するには、代わりにstopコマンドを使用できます。

  1. sudo systemctl stop application.service

再起動とリロード

実行中のサービスを再開するには、restartコマンドを使用できます。

  1. sudo systemctl restart application.service

問題のアプリケーションが(再起動せずに)構成ファイルを再ロードできる場合は、reloadコマンドを発行して、そのプロセスを開始できます。

  1. sudo systemctl reload application.service

サービスに構成を再ロードする機能があるかどうかわからない場合は、reload-or-restartコマンドを発行できます。 これにより、可能な場合は構成がインプレースで再ロードされます。 それ以外の場合は、サービスが再起動されるため、新しい構成が取得されます。

  1. sudo systemctl reload-or-restart application.service

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

上記のコマンドは、現在のセッション中にサービスを開始または停止する場合に役立ちます。 systemdに起動時にサービスを自動的に開始するように指示するには、サービスを有効にする必要があります。

起動時にサービスを開始するには、enableコマンドを使用します。

  1. sudo systemctl enable application.service

これにより、システムのサービスファイルのコピー(通常は/lib/systemd/systemまたは/etc/systemd/system)から、systemdが自動起動ファイルを探すディスク上の場所(通常は[ X189X]