Linuxの起動システムとして広く採用されている「systemd」。従来のSysVinitやUpstartに代わり、より柔軟で強力な管理機能を提供しています。本記事では、systemdの概要から基本的な操作方法、ユニットの管理方法まで詳しく解説します。Linux管理者や開発者にとって欠かせない知識をしっかり身につけましょう。
目次
systemdとは?
systemdの概要
systemdは、Linuxの起動プロセスを管理する「initシステム」の一種であり、Red Hat Enterprise Linux(RHEL)、Ubuntu、Debianなど多くのディストリビューションで標準採用されています。
systemdの特徴
- 並列起動: 従来のSysVinitよりも速く起動できる。
- ユニット管理: サービス、マウントポイント、デバイスなどを「ユニット」として統一的に管理。
- 依存関係の自動解決: ユニットの実行順序を自動で最適化。
- ログ管理の統合:
journald
による詳細なログ管理。
systemdの基本コマンド
systemdを操作するための主要なコマンドを紹介します。
サービスの管理
サービスの起動・停止
# サービスの起動
sudo systemctl start サービス名
# サービスの停止
sudo systemctl stop サービス名
サービスの有効化・無効化
# サービスをブート時に自動起動
sudo systemctl enable サービス名
# 自動起動を無効化
sudo systemctl disable サービス名
サービスの状態確認
sudo systemctl status サービス名
システムの再起動・シャットダウン
# システムの再起動
sudo systemctl reboot
# システムのシャットダウン
sudo systemctl poweroff
ユニットの種類と管理
systemdでは、以下のような「ユニット」を使用してシステムの各要素を管理します。
ユニットの種類
ユニットタイプ | 説明 |
---|---|
service | サービスの管理(例:apache2.service ) |
target | グループ化されたユニット(例:multi-user.target ) |
socket | ソケットの管理(例:sshd.socket ) |
device | デバイスの管理(例:dev-sda1.device ) |
mount | ファイルシステムのマウント(例:home.mount ) |
ユニットの操作
ユニットの一覧表示
systemctl list-units --type=service
ユニットファイルの確認
systemctl cat ユニット名
ユニットの再読み込み
設定変更後、ユニットを再読み込みするには次のコマンドを使用します。
sudo systemctl daemon-reload
systemdの高度な機能
タイマーの設定
cron
の代替として、systemdでは「タイマーユニット(.timer)」を使って定期的なタスクを実行できます。
タイマーの作成例
- タイマーユニットファイルの作成(例:
mytask.timer
)
[Unit]
Description=My Task Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
- 対応するサービスユニット(例:
mytask.service
)
[Unit]
Description=My Task
[Service]
ExecStart=/usr/local/bin/myscript.sh
- タイマーの有効化
sudo systemctl enable --now mytask.timer
systemd-journaldによるログ管理
systemdには独自のログ管理機能journald
があり、システムやサービスのログを統合的に管理できます。
ログの確認
journalctl -u サービス名
ログのリアルタイム表示
journalctl -f
まとめ
systemdは、Linuxの起動やサービス管理を効率化する強力なツールです。本記事では、基本的なコマンドやユニットの種類、高度な機能としてタイマーやログ管理について紹介しました。systemdを活用することで、Linuxの管理がよりスムーズになりますので、ぜひ実際に試してみてください。