はじめに
Linux の起動・停止やプロセス管理を行う systemd は、現在のほとんどのディストリビューションで標準的に採用されています。本記事では、systemd の基本的な使い方から実際にサービスを作成・管理する手順までを解説します。
systemd の基本構成
systemd は ユニット (unit) と呼ばれる構成要素で構成されます。ユニットは機能ごとに種類が分かれ、サービス (service) ユニットが最も一般的です。
基本的なコマンド
- systemctl status サービス名 – サービスの状態を確認
- systemctl start サービス名 – サービスを起動
- systemctl stop サービス名 – サービスを停止
- systemctl restart サービス名 – サービスを再起動
- systemctl enable サービス名 – 起動時に自動実行設定
- systemctl disable サービス名 – 起動時自動実行を解除
ユニットファイルの作成
新しいサービスを作成するには、/etc/systemd/system/ 配下にユニットファイル (拡張子 .service) を作成します。以下は最小構成の例です。
[Unit]
Description=サンプルサービス
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/sample/app.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
ポイント:
- [Unit] セクションで依存関係や説明を記述
- [Service] で実行コマンドや再起動ポリシーを定義
- [Install] で有効化時のターゲットを指定
サービスの有効化と起動
ユニットファイルを作成したら、systemd に再読み込みさせ、サービスを有効化・起動します。
# systemctl daemon-reload # ユニットファイルの再読み込み
# systemctl enable sample.service # 起動時に自動起動設定
# systemctl start sample.service # 今すぐ起動
# systemctl status sample.service # 状態確認
ログの確認
systemd は journald と連携し、サービスの標準出力・標準エラーをログとして収集します。ログは以下のコマンドで確認できます。
# journalctl -u sample.service --since "1 hour ago"
まとめ
systemd は強力かつ柔軟なサービス管理ツールです。今回紹介した手順を踏めば、独自のサービスを簡単に作成し、起動・停止・自動起動設定・ログ確認まで一元管理できます。実際の運用では 依存関係 や リソース制限 など高度な設定も併せて検討すると、より安定したシステム運用が実現できます。