Linuxの起動システムとして広く採用されている「systemd」。従来のSysVinitやUpstartに代わり、より柔軟で強力な管理機能を提供しています。本記事では、systemdの概要から基本的な操作方法、ユニットの管理方法まで詳しく解説します。Linux管理者や開発者にとって欠かせない知識をしっかり身につけましょう。
systemdは、Linuxの起動プロセスを管理する「initシステム」の一種であり、Red Hat Enterprise Linux(RHEL)、Ubuntu、Debianなど多くのディストリビューションで標準採用されています。
journald
による詳細なログ管理。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
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
があり、システムやサービスのログを統合的に管理できます。
journalctl -u サービス名
journalctl -f
systemdは、Linuxの起動やサービス管理を効率化する強力なツールです。本記事では、基本的なコマンドやユニットの種類、高度な機能としてタイマーやログ管理について紹介しました。systemdを活用することで、Linuxの管理がよりスムーズになりますので、ぜひ実際に試してみてください。