systemd徹底解説:Linuxシステム管理のスタンダード

Linuxサーバーやデスクトップの運用が高度化する中、システムサービスの起動・監視・管理に求められる機能も複雑化しています。従来はシェルスクリプトでサービスを個別管理していましたが、障害対応や自動復旧、ログ集約、資源(CPU・メモリ)の制御といった要求に応じるには限界がありました。systemdはこうした現場の課題を統合的に解決するために生まれ、現在では主要なLinuxディストリビューションに標準採用されています。起動速度の高速化、宣言的な構成管理、堅牢なリソース分離と死活監視、一元化ログなど、その機能群は日常運用から障害対応まで多様な場面で活用されています。

systemdとは

systemdは、現代の主要Linuxディストリビューションでデフォルト採用されているシステムおよびサービスマネージャです。起動プロセスの一元管理により高速なブートと柔軟なサービス制御を実現します。

systemdの特徴と導入背景

systemdは従来のSysVinitやUpstart等のinitシステムが抱える課題(直列処理・可用性・管理複雑性)を解決するため開発されました。並列起動と強力な依存関係解決、ユニットファイルによる統一的サービス定義、豊富な追加機能(ログ管理、タイマー、ネットワーク管理等)が特長です。

systemdの基本構成

ユニットファイルとは

systemdは「ユニット(unit)」というファイル群で各種リソースを管理します。主な種類は以下の通りです。

  • .service(サービスの定義)
  • .socket(ソケット管理)
  • .timer(ジョブ・スケジューリング)
  • .target(起動ターゲットの定義)
  • .mount(ファイルシステムのマウント)

すべてテキストファイルで記述し、/etc/systemd/system/等に配置します。

systemdの主要コマンドと使用例

systemctlコマンドで各種ユニットを制御します。

・サービス起動

sudo systemctl start nginx

・サービス停止

sudo systemctl stop nginx

・サービス再起動

sudo systemctl restart nginx

・サービス状態確認

systemctl status nginx

・自動起動有効化

sudo systemctl enable nginx

・ログ閲覧

journalctl -u nginx

サービスユニットファイルの例

以下は自作シェルスクリプトをsystemdサービスとして登録するサンプルです。

[Unit]
Description=My Sample Application
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/myapp.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

作成後は、以下で、リロード->有効化->開始ができます。

sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service

他initシステムとの比較(SysVinit等)

比較項目systemdSysVinit
起動方式並列実行、依存関係自動解決直列実行、依存関係手動管理
サービス定義ユニットファイルによる柔軟な設定シェルスクリプト
ログ管理journaldの集中管理・高機能各サービスごとに分散ログ
拡張性タイマー、ネットワーク、DNS等多機能内蔵拡張は別途ツール導入
互換性SysVスクリプト互換、他initと選択可能他initとも若干の互換性

systemdの代表的コンポーネント

  • systemd(メインデーモン・PID 1)
  • systemctl(制御用コマンド)
  • journald(ログ管理)
  • networkd(ネットワーク設定)
  • timer(スケジュールタスク)
  • logind(セッション管理)
  • その他:systemd-boot, systemd-analyze など

導入時の注意点と議論

systemdはその多機能性ゆえ「肥大化している」「UNIX哲学と矛盾する」という批判も受けています。OpenRCやrunitなど他initを選べるディストリビューションも一部存在しますが、主要Linuxでは2020年代以降ほぼ標準です。

まとめ

systemdはLinux運用現場で必要不可欠な知識です。高速な起動、柔軟かつ強力なサービス管理、一元的なログ・コンポーネント管理を通じて、システム管理の標準となっています。systemdはLinuxサービス・プロセス管理の標準であり、高速起動や効率的な運用、障害復旧の基盤として重要です。本記事では、現場で活躍するためのsystemd基礎から設定や運用例までを体系的に解説します。

にいやん

出身 : 関西 居住区 : 関西 職業 : 組み込み機器エンジニア (エンジニア歴13年) 年齢 : 38歳(2022年11月現在) 最近 業務の効率化で噂もありPython言語に興味を持ち勉強しています。 そこで学んだことを記事にして皆さんとシェアさせていただければと思いブログをはじめました!! 興味ある記事があれば皆さん見ていってください!! にほんブログ村