本記事では、現代の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
このコマンドで各サービスのSTATE
(enabled
やdisabled
など)を確認できます。
ここでは、本記事で紹介した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 status
やjournalctl -u
で依存関係に関するエラーが出ていないか確認しましょう。
本記事では、Linuxのサービス管理に不可欠なsystemdとsystemctl
コマンドの基本的な使い方を解説しました。サービスの起動・停止・再起動、そして自動起動の設定をマスターすることで、よりスムーズなシステム運用が可能になります。
この記事がsystemdによるサービス管理について理解を深める一助となれば幸いです。
ご覧いただきありがとうございました。
次回は、ファイル検索のfind
コマンドとlocate
コマンドの使い分けについて解説します。