Linuxサービス管理の基本:systemctlコマンドで起動・自動起動をマスターする
Linuxシステムを運用する上で、さまざまなサービス(デーモン)の管理は避けて通れません。WebサーバーのApacheやNginx、データベースのMySQLやPostgreSQLなど、これらのサービスが正しく動作していなければ、システムは期待通りに機能しません。

本記事では、現代のLinuxシステムで主流となっているsystemd(システムディー)を用いたサービス管理について、その基本的なコマンドと活用方法を解説します。
この記事でわかること
  • systemctlコマンドの基本的な使い方
  • サービスの起動・停止・再起動・状態確認
  • システムの起動時にサービスを自動起動させる方法
  • 起動しないサービスの原因特定と対処法

サービスの起動・停止・再起動・状態確認

サービスがうまく動かない、あるいは起動させたいといった状況で最もよく使うのがsystemctlコマンドです。

サービスの起動

サービスを起動するにはstartオプションを使います。

sudo systemctl start <サービス名>

例:Apache(httpd)サービスを起動する

sudo systemctl start httpd
サービスの停止

稼働中のサービスを停止するにはstopオプションを使います。

sudo systemctl stop <サービス名>

例:Apache(httpd)サービスを停止する

sudo systemctl stop httpd
サービスの再起動

設定ファイルの変更を反映させたい場合など、サービスを再起動するにはrestartオプションを使います。サービスが停止している場合は起動します。

sudo systemctl restart <サービス名>

例:Apache(httpd)サービスを再起動する

sudo systemctl restart httpd

設定ファイルを再読み込みするだけでよい場合はreloadオプションも利用できます。これはサービスを停止しないため、サービス断なく設定を反映できるメリットがあります。ただし、reloadに対応していないサービスもあります。

sudo systemctl reload <サービス名>
サービスの現在の状態を確認する

サービスが起動しているか、エラーが発生していないかなどを確認するにはstatusオプションを使います。

systemctl status <サービス名>

例:Apache(httpd)サービスの状態を確認する

systemctl status httpd

このコマンドを実行すると、サービスがactive (running)であれば正常に動作しており、エラーログなども表示されるため、問題発生時の原因究明に役立ちます。


サービスの自動起動設定

システムを再起動した際に、特定のサービスを自動的に起動させたい場合は、enableオプションを使います。

自動起動の有効化
sudo systemctl enable <サービス名>

例:Apache(httpd)サービスを自動起動する設定にする

sudo systemctl enable httpd

このコマンドは、システムの起動時にサービスが自動的に起動するよう、シンボリックリンクを作成します。

自動起動の無効化

自動起動を停止させたい場合はdisableオプションを使います。

sudo systemctl disable <サービス名>

例:Apache(httpd)サービスの自動起動設定を解除する

sudo systemctl disable httpd
自動起動設定の確認

サービスが自動起動に設定されているかを確認するにはis-enabledオプションを使います。

systemctl is-enabled <サービス名>

有効な場合はenabled、無効な場合はdisabledと表示されます。

現在の自動起動状態を一覧で確認する

システムに登録されているすべてのサービスの自動起動設定を一覧で確認したい場合は、以下のコマンドが便利です。

systemctl list-unit-files --type=service

このコマンドで各サービスのSTATEenableddisabledなど)を確認できます。


systemctlコマンド一覧

ここでは、本記事で紹介したsystemctlコマンドの主要なオプションをまとめます。

コマンド 役割
sudo systemctl start <サービス名> サービスを起動する
sudo systemctl stop <サービス名> サービスを停止する
sudo systemctl restart <サービス名> サービスを再起動する
sudo systemctl reload <サービス名> サービスの設定を再読み込みする(対応サービスのみ)
systemctl status <サービス名> サービスの状態を確認する
sudo systemctl enable <サービス名> サービスの自動起動を有効にする
sudo systemctl disable <サービス名> サービスの自動起動を無効にする
systemctl is-enabled <サービス名> サービスの自動起動設定を確認する
systemctl list-unit-files --type=service 全サービスの自動起動設定一覧を表示

この状況で困ったらコレ!
  • サービス名が分からない 現在システムで動いているサービスの一覧を確認したい場合は、systemctl list-units --type=serviceコマンドが役立ちます。

  • サービスが起動しない!何が原因?

    • まずはsystemctl status <サービス名>を実行しましょう。エラーメッセージが表示されるはずです。特に赤字で表示される行は重要なヒントになります。
    • より詳細なエラーログを確認するには、journalctl -u <サービス名>コマンドが非常に有効です。サービスの起動から現在までのログが表示されます。
    • 関連するログファイル(/var/log/messages/var/log/syslog、各サービスの専用ログなど)も確認してください。
    • 設定ファイルに構文エラーがないか、パーミッションは正しいかなども確認しましょう。
  • 自動起動設定したはずなのに再起動したら動いてない…

    • systemctl is-enabled <サービス名>で「enabled」になっているか確認してください。
    • また、サービスによっては、他のサービスが先に起動していることを前提とする依存関係(After=Requires=など)が設定されている場合があります。もし依存関係にあるサービスが起動に失敗していると、本体のサービスも起動できません。systemctl statusjournalctl -uで依存関係に関するエラーが出ていないか確認しましょう。

まとめ

本記事では、Linuxのサービス管理に不可欠なsystemdsystemctlコマンドの基本的な使い方を解説しました。サービスの起動・停止・再起動、そして自動起動の設定をマスターすることで、よりスムーズなシステム運用が可能になります。

この記事がsystemdによるサービス管理について理解を深める一助となれば幸いです。
ご覧いただきありがとうございました。

次回は、ファイル検索のfindコマンドとlocateコマンドの使い分けについて解説します。

私たちは、お客さまが私たちのウェブサイトをどのように使用するのかを理解し、お客さまの体験を改善するために Cookie を使用しています。 閲覧を続けると Cookie の使用に同意したことになります。
拒否した場合、このウェブサイトにアクセスしてもお客さまの情報は追跡されません。 情報を追跡しない設定を記憶するために、ウェブブラウザで 1 つだけ Cookie が使用されます。