Arch Linuxでsystemdを使いこなす!サービス管理の基本を徹底解説
Arch Linuxにおけるsystemdの基本を解説。systemctlやjournalctlの使い方、サービスの自動起動設定、よくある誤解まで実例付きで紹介。
はじめに
Arch Linuxは最小限の構成から自分好みにカスタマイズできるディストリビューションですが、システム管理の要となるのがsystemdです。本記事では、systemdの基本的な概念から、サービスの起動・停止・自動起動設定、ログの確認方法までを実践的に解説します。
systemdとは?
定義
systemdはLinuxのinitシステム(システム起動時に最初に実行されるプロセス)であり、サービスの管理や依存関係の解決、並列起動などを担います。Arch Linuxではデフォルトで採用されています。背景
従来のSysVinitやBSDスタイルのinitは直列処理が中心で、起動が遅く依存関係の記述が煩雑でした。systemdはユニットという概念でサービスやマウントなどを統一的に管理し、ソケットやD-Busによるアクティベーションで効率的な起動を実現します。systemdの仕組み
ユニットとは
systemdが管理するリソースはすべてユニットとして定義されます。代表的なユニットタイプは以下の通りです。.service : デーモンやサービスの定義.socket : ソケットアクティベーション.target : 複数ユニットのグループ(runlevel相当).timer : 定期実行の定義(cron代替)ユニットファイルは /usr/lib/systemd/system/(パッケージ提供)や /etc/systemd/system/(ユーザー設定)に配置されます。
systemctlの基本コマンド
サービスの操作はsystemctl コマンドで行います。
#### サービスの状態確認
<h1>すべてのユニットの状態を表示</h1>
systemctl list-units --type=service
<h1>特定のサービスの状態を表示(例: sshd)</h1>
systemctl status sshd.service
出力例では「active (running)」「enabled」「disabled」などが確認できます。
#### サービスの起動・停止・再起動
<h1>起動</h1>
sudo systemctl start sshd.service
<h1>停止</h1>
sudo systemctl stop sshd.service
<h1>再起動</h1>
sudo systemctl restart sshd.service
<h1>設定ファイルを再読み込み(一部のサービス)</h1>
sudo systemctl reload sshd.service
#### 自動起動の設定
<h1>自動起動を有効化</h1>
sudo systemctl enable sshd.service
<h1>自動起動を無効化</h1>
sudo systemctl disable sshd.service
<h1>自動起動の有効状態を確認</h1>
systemctl is-enabled sshd.service
enable は /etc/systemd/system/ にシンボリックリンクを作成します。
#### 即時起動+自動起動の両方を設定
sudo systemctl enable --now sshd.service
このコマンドで有効化と即時起動を同時に行えます。
実用例:SSHサーバーの管理
1. SSHサーバーのインストールと起動
<h1>opensshパッケージをインストール</h1>
sudo pacman -S openssh
<h1>サービスを起動</h1>
sudo systemctl start sshd.service
<h1>自動起動を有効化</h1>
sudo systemctl enable sshd.service
2. 状態確認とトラブルシューティング
<h1>状態確認</h1>
systemctl status sshd.service
<h1>ログを確認(-u でユニット指定)</h1>
journalctl -u sshd.service -e
journalctl はsystemdのログ管理ツール。-e で最新のログを表示します。
3. 設定変更後の再読み込み
/etc/ssh/sshd_config を編集したら:
sudo systemctl reload sshd.service
restart と異なり、reload は接続を切断せずに設定を再読み込みします。
よくある誤解
誤解1: systemctl enable だけでサービスが起動する
enable は自動起動の設定のみで、即時起動はしません。起動するには start または enable --now を使います。
誤解2: サービス名の拡張子は必須
systemctl status sshd のように拡張子を省略できます。ただし .service 以外のユニット(.socket など)は指定が必要な場合があります。
誤解3: journalctl は常に全ログを表示する
journalctl はデフォルトで現在のブートのログのみ表示します。過去のログは journalctl --list-boots で確認し、-b -1 などで指定します。
誤解4: systemdは複雑すぎる
確かに従来のinitより学習曲線はありますが、一度慣れれば統一的な管理が可能です。man systemd.service や man systemctl で詳細を確認しましょう。
*この記事はArch Linuxを実機で日常運用しているSioが、実際のインストール・設定経験に基づいてAI生成コンテンツをレビュー・補完しています。btrfsサブボリュームとLUKS暗号化環境で検証済みです。*
まとめ
Arch Linuxでsystemdを理解することは、システム管理の効率化に直結します。
enable と start を別々に、または enable --now でこれらの基本を押さえれば、サーバー運用やトラブルシューティングが格段に楽になります。ぜひ実際にコマンドを打ちながら試してみてください。