# systemd ユニットと systemctl

> systemd ユニットの概要、一般的なユニットタイプ、および systemctl を使用してサービスを開始、停止、有効化、確認する方法について解説します。

systemd ユニットは、ほとんどの Linux ディストリビューションの init システムである systemd が管理する設定オブジェクトであり、サービス、ソケット、タイマー、マウントなどを扱います。ユニットは /etc/systemd/system/<name>.service といったユニットファイルで記述され、systemctl コマンドで制御されます。

## ユニットタイプ

.service はプログラムを実行し、.socket は接続が到着したときにサービスを開始し、.timer はスケジュールに基づいてユニットを実行し、.mount および .automount はファイルシステムを処理し、.target は multi-user.target のような状態にユニットをグループ化します。

## ユニットファイルの場所

パッケージは /usr/lib/systemd/system (または /lib/systemd/system) にユニットをインストールします。ローカルでの変更は /etc/systemd/system に配置し、こちらが優先されます。'systemctl edit <unit>' を使用すると、パッケージ化されたファイルを直接変更する代わりに、ドロップイン形式のオーバーライドを作成できます。

## 日常的なコマンド

'systemctl status <unit>' は状態と最新のログ行を表示します。'start'、'stop'、'restart' は即時に実行され、'enable' と 'disable' は起動時の開始を制御します。'enable --now' はその両方を行います。'systemctl --failed' は失敗したユニットを一覧表示し、'systemctl daemon-reload' は変更後にユニットファイルを再読み込みします。

## 失敗したサービスの確認方法

1. 失敗したユニットを一覧表示: systemctl --failed
2. 状態と最近のメッセージを表示: systemctl status <unit>
3. 今回の起動時の全ログを読み取る: journalctl -u <unit> -b
4. 設定を修正した後: sudo systemctl restart <unit>

## 注意点

- /usr/lib/systemd/system 内のファイルを直接編集せず、'systemctl edit' を使用してパッケージ化されたユニットを変更してください。アップデートによって上書きされるためです。
- systemd-journald や dbus など、不明なユニットを無効にしないでください。

## 出典

- [systemctl(1)](https://man7.org/linux/man-pages/man1/systemctl.1.html)
- [systemd.unit(5)](https://man7.org/linux/man-pages/man5/systemd.unit.5.html)
- [systemd.timer(5)](https://man7.org/linux/man-pages/man5/systemd.timer.5.html)

最終更新: 2026-10-08
URL: https://raincleaner.eu/ja/wiki/linux/systemd-units
