[Linux] systemctlコマンドの使い方 – サービスの開始/停止/再起動/自動起動

systemctlコマンドは、Linuxのシステムおよびサービスマネージャであるsystemdを操作するためのツールです。

サービスの管理に使用され、以下の操作が可能です。

サービスの開始はsystemctl start サービス名、停止はsystemctl stop サービス名、再起動はsystemctl restart サービス名で行います。

自動起動の有効化はsystemctl enable サービス名、無効化はsystemctl disable サービス名です。

サービスの状態確認にはsystemctl status サービス名を使用します。

この記事でわかること
  • systemctlコマンドの基本的な使い方
  • サービスの開始、停止、再起動方法
  • 自動起動設定の手順と確認方法
  • サービスの状態やログの確認方法
  • マスクとアンマスクの違いと使い方

目次から探す

systemctlコマンドとは

systemctlは、Linuxのsystemdシステムおよびサービスマネージャのコマンドラインインターフェースです。

systemdは、Linuxの起動プロセスを管理し、サービスの起動、停止、再起動、監視などを行います。

systemctlを使用することで、これらの操作を簡単に実行できます。

systemdとsystemctlの関係

  • systemd: Linuxの初期化システムであり、サービスの管理やプロセスの監視を行う。
  • systemctl: systemdの管理ツールで、サービスの状態確認や操作を行うためのコマンドラインツール。

systemctlコマンドの基本的な役割

スクロールできます
役割説明
サービスの管理サービスの開始、停止、再起動を行う。
サービスの状態確認サービスの現在の状態を確認する。
自動起動設定サービスの自動起動を有効または無効にする。
ログの確認サービスのログを確認する。

systemctlコマンドの構文

systemctlコマンドの基本的な構文は以下の通りです。

systemctl [オプション] [コマンド] [サービス名]
  • オプション: コマンドの動作を変更するためのオプション。
  • コマンド: 実行したい操作(例: start, stop, restart, statusなど)。
  • サービス名: 操作対象のサービスの名前。

例:systemctl start httpd

このコマンドは、httpdサービスを開始します。

サービスの開始と停止

Linuxシステムにおいて、サービスの管理は非常に重要です。

systemctlコマンドを使用することで、サービスの開始や停止を簡単に行うことができます。

以下に、具体的な方法を解説します。

サービスの開始方法

サービスを開始するには、systemctl startコマンドを使用します。

以下は、サービスを開始するための基本的なコマンドです。

systemctl start [サービス名]

例:systemctl start nginx

このコマンドは、nginxサービスを開始します。

サービスの停止方法

サービスを停止するには、systemctl stopコマンドを使用します。

以下は、サービスを停止するための基本的なコマンドです。

systemctl stop [サービス名]

例:systemctl stop nginx

このコマンドは、nginxサービスを停止します。

サービスの一時停止と再開

サービスを一時的に停止し、後で再開することも可能です。

これには、systemctl pausesystemctl unpauseコマンドを使用します。

  • 一時停止:
systemctl pause [サービス名]

例:systemctl pause nginx

  • 再開:
systemctl unpause [サービス名]

例:systemctl unpause nginx

サービスの状態確認

サービスの現在の状態を確認するには、systemctl statusコマンドを使用します。

以下は、サービスの状態を確認するための基本的なコマンドです。

systemctl status [サービス名]

例:systemctl status nginx

このコマンドは、nginxサービスの状態を表示します。

出力には、サービスが実行中かどうか、エラーメッセージ、ログ情報などが含まれます。

サービスの再起動

サービスの再起動は、設定変更を反映させたり、問題を解決したりするために重要な操作です。

systemctlコマンドを使用して、サービスの再起動やリロードを行う方法を解説します。

サービスの再起動方法

サービスを再起動するには、systemctl restartコマンドを使用します。

以下は、サービスを再起動するための基本的なコマンドです。

systemctl restart [サービス名]

例:systemctl restart nginx

このコマンドは、nginxサービスを再起動します。

再起動により、サービスは停止し、再度開始されます。

再起動とリロードの違い

  • 再起動: サービスを一度停止し、再度開始します。

これにより、サービスの全てのプロセスが再生成されます。

  • リロード: サービスを停止せずに設定ファイルを再読み込みします。

これにより、設定変更を反映させることができますが、サービスのプロセスはそのまま維持されます。

サービスのリロード方法

サービスをリロードするには、systemctl reloadコマンドを使用します。

以下は、サービスをリロードするための基本的なコマンドです。

systemctl reload [サービス名]

例:systemctl reload nginx

このコマンドは、nginxサービスの設定ファイルを再読み込みします。

リロードにより、サービスは停止せずに新しい設定が適用されます。

再起動が必要なケース

再起動が必要なケースには以下のような状況があります。

  • サービスの設定ファイルを変更したが、リロードでは反映されない場合。
  • サービスが異常終了した場合や、動作が不安定な場合。
  • 新しいバージョンのソフトウェアをインストールした場合。

これらの状況では、再起動を行うことでサービスを正常な状態に戻すことができます。

サービスの自動起動設定

Linuxシステムでは、サービスを自動的に起動させる設定が重要です。

これにより、システム起動時に必要なサービスが自動的に開始され、手動での操作を省くことができます。

以下に、自動起動の設定方法を解説します。

自動起動の有効化

サービスの自動起動を有効にするには、systemctl enableコマンドを使用します。

以下は、自動起動を有効にするための基本的なコマンドです。

systemctl enable [サービス名]

例:systemctl enable nginx

このコマンドは、nginxサービスの自動起動を有効にします。

これにより、システム起動時にnginxサービスが自動的に開始されます。

自動起動の無効化

サービスの自動起動を無効にするには、systemctl disableコマンドを使用します。

以下は、自動起動を無効にするための基本的なコマンドです。

systemctl disable [サービス名]

例:systemctl disable nginx

このコマンドは、nginxサービスの自動起動を無効にします。

これにより、システム起動時にnginxサービスは自動的に開始されなくなります。

自動起動の状態確認

サービスの自動起動の設定状態を確認するには、systemctl is-enabledコマンドを使用します。

以下は、自動起動の状態を確認するための基本的なコマンドです。

systemctl is-enabled [サービス名]

例:systemctl is-enabled nginx

このコマンドは、nginxサービスの自動起動が有効か無効かを表示します。

出力結果は、enabled(有効)またはdisabled(無効)となります。

自動起動の設定を反映するタイミング

自動起動の設定は、次回システムが起動した際に反映されます。

具体的には、以下のタイミングで設定が適用されます。

  • システムの再起動時
  • サービスの手動起動時(自動起動が有効な場合)

このため、自動起動の設定を変更した後は、システムを再起動するか、サービスを手動で起動することで、設定が反映されることを確認できます。

サービスのステータス確認

サービスの状態を確認することは、システムの健全性を保つために重要です。

systemctlコマンドを使用して、サービスの状態やログ、依存関係を確認する方法を解説します。

サービスの状態を確認する方法

サービスの現在の状態を確認するには、systemctl statusコマンドを使用します。

以下は、サービスの状態を確認するための基本的なコマンドです。

systemctl status [サービス名]

例:systemctl status nginx

このコマンドは、nginxサービスの状態を表示します。

出力には、サービスが実行中かどうか、プロセスID、エラーメッセージ、起動時間などの情報が含まれます。

サービスのログを確認する方法

サービスのログを確認するには、journalctlコマンドを使用します。

特定のサービスのログを表示するには、以下のコマンドを使用します。

journalctl -u [サービス名]

例:journalctl -u nginx

このコマンドは、nginxサービスに関連するログを表示します。

ログは時系列で表示され、エラーメッセージや警告などを確認することができます。

サービスの依存関係を確認する方法

サービスの依存関係を確認するには、systemctl list-dependenciesコマンドを使用します。

以下は、サービスの依存関係を確認するための基本的なコマンドです。

systemctl list-dependencies [サービス名]

例:systemctl list-dependencies nginx

このコマンドは、nginxサービスが依存している他のサービスやターゲットを表示します。

依存関係を把握することで、サービスの動作に影響を与える要因を理解することができます。

サービスのマスクとアンマスク

サービスのマスクとアンマスクは、特定のサービスを意図的に無効化するための手段です。

これにより、サービスが誤って起動されるのを防ぐことができます。

以下に、サービスのマスクとアンマスクについて詳しく解説します。

サービスのマスクとは

サービスのマスクとは、特定のサービスを完全に無効化することを指します。

マスクされたサービスは、どのような方法でも起動できなくなります。

これは、サービスが不要である場合や、セキュリティ上の理由からサービスを無効にしたい場合に使用されます。

サービスをマスクする方法

サービスをマスクするには、systemctl maskコマンドを使用します。

以下は、サービスをマスクするための基本的なコマンドです。

systemctl mask [サービス名]

例:systemctl mask nginx

このコマンドは、nginxサービスをマスクします。

マスクされたサービスは、systemctl startsystemctl restartなどのコマンドで起動することができなくなります。

サービスをアンマスクする方法

マスクされたサービスを再び使用可能にするには、systemctl unmaskコマンドを使用します。

以下は、サービスをアンマスクするための基本的なコマンドです。

systemctl unmask [サービス名]

例:systemctl unmask nginx

このコマンドは、nginxサービスのマスクを解除します。

アンマスクされたサービスは、通常通りに起動や停止が可能になります。

マスクと無効化の違い

  • マスク: サービスを完全に無効化し、どのような方法でも起動できなくします。

これは、サービスが誤って起動されるのを防ぐための強力な手段です。

  • 無効化: サービスの自動起動を無効にしますが、手動で起動することは可能です。

無効化は、サービスを一時的に停止したい場合に適しています。

このように、マスクと無効化は異なる目的で使用されるため、状況に応じて使い分けることが重要です。

応用例

systemctlコマンドを使用したサービス管理には、基本的な操作だけでなく、さまざまな応用例があります。

ここでは、サービスの自動再起動設定やタイマー設定、依存関係の設定、優先度の設定について解説します。

サービスの自動再起動設定

サービスが異常終了した場合に自動的に再起動させる設定を行うことができます。

これには、サービスのユニットファイルにRestartオプションを追加します。

  1. ユニットファイルを編集します。
sudo nano /etc/systemd/system/[サービス名].service
  1. [Service]セクションに以下の行を追加します。
Restart=always

この設定により、サービスが停止した場合に自動的に再起動されます。

サービスのタイマー設定

特定の時間にサービスを自動的に起動するためのタイマーを設定することができます。

これには、タイマー用のユニットファイルを作成します。

  1. タイマーのユニットファイルを作成します。
sudo nano /etc/systemd/system/[サービス名].timer
  1. 以下の内容を追加します。
[Unit]
Description=Run [サービス名] every day
[Timer]
OnCalendar=daily
[Install]
WantedBy=timers.target

この設定により、指定したサービスが毎日自動的に起動します。

タイマーを有効にするには、以下のコマンドを実行します。

sudo systemctl enable [サービス名].timer
sudo systemctl start [サービス名].timer

サービスの依存関係を設定する

サービスが他のサービスに依存している場合、その依存関係を設定することができます。

これには、ユニットファイルにRequiresAfterオプションを追加します。

  1. ユニットファイルを編集します。
sudo nano /etc/systemd/system/[サービス名].service
  1. [Unit]セクションに以下の行を追加します。
Requires=[依存サービス名]
After=[依存サービス名]

この設定により、指定した依存サービスが起動した後に、対象のサービスが起動します。

サービスの優先度を設定する

サービスの起動順序を制御するために、優先度を設定することができます。

これには、ユニットファイルにBeforeAfterオプションを追加します。

  1. ユニットファイルを編集します。
sudo nano /etc/systemd/system/[サービス名].service
  1. [Unit]セクションに以下の行を追加します。
Before=[他のサービス名]
After=[他のサービス名]

この設定により、指定したサービスの前または後に対象のサービスが起動するようになります。

これにより、サービスの起動順序を柔軟に制御できます。

よくある質問

systemctlコマンドでサービスが起動しない場合は?

サービスが起動しない場合、以下の点を確認してください。

  • サービス名の確認: 指定したサービス名が正しいか確認します。
  • ログの確認: journalctl -u [サービス名]コマンドを使用して、エラーメッセージや警告を確認します。
  • 依存関係の確認: サービスが依存している他のサービスが正常に起動しているか確認します。
  • 設定ファイルの確認: サービスの設定ファイルに誤りがないか確認します。

サービスの自動起動が有効にならないのはなぜ?

自動起動が有効にならない場合、以下の理由が考えられます。

  • 無効化されている: systemctl is-enabled [サービス名]コマンドで自動起動が無効になっていないか確認します。
  • ユニットファイルの問題: ユニットファイルに誤りがある場合、自動起動が機能しないことがあります。
  • 依存関係の問題: 自動起動が有効なサービスが依存している他のサービスが無効になっている場合、起動しないことがあります。

サービスの状態が failed になった場合の対処法は?

サービスの状態が failed となった場合、以下の手順で対処します。

  1. ログの確認: journalctl -u [サービス名]コマンドでエラーメッセージを確認します。
  2. 設定ファイルの確認: サービスの設定ファイルに誤りがないか確認します。
  3. 依存関係の確認: 依存しているサービスが正常に動作しているか確認します。
  4. 再起動: サービスを再起動してみます。

systemctl restart [サービス名]コマンドを使用します。

  1. 必要に応じて修正: エラーメッセージに基づいて、必要な修正を行います。

まとめ

この記事では、Linuxのsystemctlコマンドを使用したサービスの管理方法について詳しく解説しました。

サービスの開始や停止、再起動、自動起動の設定、状態確認、マスクとアンマスクの操作など、実践的な内容を取り上げています。

これらの知識を活用して、システムのサービス管理を効率的に行い、安定した運用を実現してください。

  • URLをコピーしました!
目次から探す