systemd は、現代の Linux システムで採用されている標準的な システム管理・サービス管理フレームワーク です。
Linuxではsystemdがサービス管理を行う仕組みとして広く使われています。
systemdを使うことで、サービスの起動・停止・自動起動を管理できます。
本記事では以下を解説します。
・systemdとは
・サービス管理の仕組み
・systemctlの使い方
📚Linux学習の全体像を知りたい方へ
本記事はLinux学習の一部内容です。初心者から現場レベルまでの学習順をまとめたロードマップはこちら。
▶Linux学習ロードマップ完全版|初心者から現場レベルまでの勉強手順とコマンド体系まとめ
目次
systemdとは何か?
systemd は、Linux の起動処理やサービス管理を包括的に担うソフトウェア群です。 従来の SysV init や Upstart を置き換え、並列処理・依存関係制御・ユニット管理など、運用効率を大きく高めました。
- PID 1 として最初に起動する init プロセス
- サービス単位で状態を管理(起動・停止・再起動など)
- ログ管理やリソース制御、タイマーなど幅広い機能
ユニット(Units)の仕組み
systemd は「ユニット」という単位であらゆる対象を管理します。ユニットは設定ファイルで定義され、サービスやソケット、タイマーなど様々な種類があります。
| ユニット種類 | 説明 |
|---|---|
.service | サービスの起動・停止を定義 |
.socket | ソケットベースの起動 |
.timer | cron 代替の定期実行 |
.target | ランレベルのグループ化 |
.mount | ファイルシステムのマウント |

基本の systemctl 操作
サービスの起動・停止・状態確認
# サービスの起動
sudo systemctl start <サービス名>.service
# 停止
sudo systemctl stop <サービス名>.service
# 状態確認
sudo systemctl status <サービス名>.service
systemctl は systemd を操作する標準コマンドで、ほぼすべてのサービス管理はこのコマンドで行います。
ユニットファイルの作成・編集
独自のサービスを作成する際はユニットファイルを作成します。一般的に
/etc/systemd/system/<ユニット名>.service
のようなパスに作成し、以下のように設定します:
[Unit]
Description=説明
[Service]
ExecStart=/path/to/app
[Install]
WantedBy=multi-user.target
作成後は設定を再読み込みします:
sudo systemctl daemon-reload
sudo systemctl enable <ユニット名>.service
sudo systemctl start <ユニット名>.service

ログの確認(journalctl)
systemd はログ管理も統合しており、journalctl を使うとサービスのログを詳細に確認できます:
# 全ログの表示
sudo journalctl
# 特定サービスのログ
sudo journalctl -u <サービス名>.service
よくあるトラブルと対処
サービスが起動しない / エラーになる
ユニットの状態を確認し、ログを確認します:
sudo systemctl status <サービス名>.service
sudo journalctl -u <サービス名>.service | tail -n 100
設定ファイル構文の誤りや ExecStart のパスミスが多い原因です。
FAQ
Q1. systemctl と systemd の違いは?
systemd はサービス管理フレームワーク全体で、systemctl はその管理を行うためのコマンドです。
Q2. systemd を無効化できるか?
多くのディストリビューションでは systemd がデフォルト init システムのため無効化は推奨されません。特殊用途で別 init を選択する方法はありますが一般的ではありません。
Q3. systemd が起動しない時は?
起動プロセス全体の問題なので、GRUB や initrd の設定、カーネルメッセージの確認も必要になります。


📌 Linuxトラブル対応を体系的に知りたい方へ
本記事はLinux障害の一部症状を解説しています。初動チェックや症状別の切り分け手順をまとめた総合ガイドはこちら。

