このガイドでは、service コマンドと systemctl コマンドについて、またサービス管理に関してそれらがどのように異なるかについて説明します。
先に進む前に、まず 2 つの一般的な Linux init システムを理解しましょう。システムと Systemd。
System V と Systemd
Linux の init システムは、ブート プロセスの重要な部分です。これは、システムの起動時に開始される PID 1 の最初のプロセスです。次に、inittab ファイルに存在するプロセスを開始します。 System V は、一般的な Linux init システムである SysV と systemd も認識しています。
の SysV は古い init システムであり、古い Unix および Linux ディストリビューションの一部でした。 /etc/init.d にあるスクリプトを使用してシステム サービスを管理します。現在も SysV を使用している Linux ディストリビューションには、Slackware、Gentoo、antiX Linux などがあります。
一方で、 システムド 2010 年に発売され、すぐに多くの Linux ディストリビューションに採用されました。 systemd init システムは、.service ファイルを通じてサービスを管理します。現在、Red Hat Enterprise Linux、CentOS、Amazon Linux、Fedora、Debian、Ubuntu、およびこれらのオペレーティング システムに基づくディストリビューションを含む、すべての最新の Linux ディストリビューションの一部となっています。
systemd は SysV に比べてはるかに効率的です。起動時間の短縮、効率的なサービス管理、依存関係の処理が可能になります。
どちらの init システムも、サービス管理用の 2 つのコマンドライン ユーティリティを提供します。
ガイドの次のセクションでは、これら 2 つのユーティリティについて説明します。
サービスコマンド
の サービス コマンドは、次の場所にあるスクリプトを実行するスクリプト ラッパーです。 /etc/init.d ディレクトリ。のサービスを管理するために開発されました。 SysV または システムV 初期化システム。 SysV を初期化システムとして使用する Linux ディストリビューションでは、 サービス サービス管理用のコマンドです。
service コマンドを使用するための一般的な構文を以下に示します。
サービス [ サービス名 】 [ アクション 】System V によって制御されるサービスのステータスを取得するには、service コマンドを次のように使用します。 –ステータス-すべて オプション。
サービス --ステータス-すべて
の + サービスが実行中であることを示します。 – サービスが非アクティブであることを示します。
サービス名を指定することで、特定のサービスの現在のステータスを確認することもできます。
サービス [ サービス名 】 状態
サービスの開始、停止、再起動など、その他の便利なサービス コマンドを以下に示します。
サービス [ サービス名 】 始めるサービス [ サービス名 】 停止
サービス [ サービス名 】 再起動
このサービス コマンドは、サービスを管理するための基本的な制御を提供します。ほとんどの Linux ディストリビューションでは、init システムとして SysV が置き換えられていますが、レガシー互換性のため、このコマンドは多くの最新の Linux ディストリビューションにそのまま付属しています。
systemctlコマンド
systemctl コマンドを使用すると、サービスを制御できます。 /lib/systemd/システム そして /etc/systemd/システム ディレクトリ。これは systemd のコンポーネントです。現在の Linux ディストリビューションの大部分に見られる init システム。
systemctl は、システム サービス管理をより詳細に制御できるように設計されています。 systemctl コマンドを使用するための一般的な構文を以下に示します。
システム制御 [ オプション 】 [ サービス名 】すべてのサービスのステータスを確認するには、次のコマンドを使用します。
systemctl リストユニット - タイプ =サービス - 全て特定のサービスの場合は次のように使用します。
システム制御ステータス [ サービス名 】
systemctl を使用してサービスの基本的な管理を行うためのコマンドを以下に示します。
システム制御 有効にする [ サービス名 】システムctlの開始 [ サービス名 】
systemctl 停止 [ サービス名 】
systemctl を無効にする [ サービス名 】
systemctl の再起動 [ サービス名 】
systemctl コマンドは、サービスの制御だけにとどまりません。以下の表には、いくつかの高度な systemctl コマンドが含まれています。
リストパス | メモリ内のすべてのサービスのパスをリストするには |
is-active [サービス名] | サービスまたはユニットが実行されているかどうかを確認するには |
依存関係のリスト [サービス名] | 指定したサービスの依存関係のリストを出力するには |
リセット失敗 | 何らかの異常によりロードに失敗したサービスをリセットするには |
マスク [サービス名] | サービスを無効にして起動できなくするには |
デフォルトを取得 | デフォルトの実行レベルまたはターゲットを出力するには |
デフォルト設定 [ターゲット] | デフォルトの実行レベルまたはターゲットを設定するには |
システムが実行中です | システムの動作状態を確認するには |
リブート | システムを再起動するには |
電源を切る | システムをシャットダウンするには |
Linux ディストリビューションに systemd init システムを使用したサービス コマンドがまだ存在する理由
service コマンドは、ラッパー スクリプトであり、SysV であっても systemctl であっても、基礎となる init システムを抽象化するため、依然として多くの Linux ディストリビューションの一部です。たとえば、Ubuntu では、service コマンドは systemctl にリダイレクトされます。
結論
service と systemctl は、それぞれ SysV と systemd init システムに属する 2 つのコマンド ライン ユーティリティです。最新の Linux ディストリビューションでは service コマンドが置き換えられていますが、そのシンプルさと互換性により、サービスを維持するための重要なツールであり続けています。一方、systemctl は、現在のすべての Linux ディストリビューションの一部であり、サービス管理のための高度なオプションを提供します。