Linuxのsystemdとは?仕組みと基本操作を徹底解説

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)」を使って定期的なタスクを実行できます。

タイマーの作成例

  1. タイマーユニットファイルの作成(例:mytask.timer
[Unit]
Description=My Task Timer

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target
  1. 対応するサービスユニット(例:mytask.service
[Unit]
Description=My Task

[Service]
ExecStart=/usr/local/bin/myscript.sh
  1. タイマーの有効化
sudo systemctl enable --now mytask.timer

systemd-journaldによるログ管理

systemdには独自のログ管理機能journaldがあり、システムやサービスのログを統合的に管理できます。

ログの確認

journalctl -u サービス名

ログのリアルタイム表示

journalctl -f

まとめ

systemdは、Linuxの起動やサービス管理を効率化する強力なツールです。本記事では、基本的なコマンドやユニットの種類、高度な機能としてタイマーやログ管理について紹介しました。systemdを活用することで、Linuxの管理がよりスムーズになりますので、ぜひ実際に試してみてください。

タイトルとURLをコピーしました