systemd ユニットと systemctl
systemd ユニットは、ほとんどの Linux ディストリビューションの init システムである systemd が管理する設定オブジェクトであり、サービス、ソケット、タイマー、マウントなどを扱います。ユニットは /etc/systemd/system/<name>.service といったユニットファイルで記述され、systemctl コマンドで制御されます。
1ユニットタイプ
.service はプログラムを実行し、.socket は接続が到着したときにサービスを開始し、.timer はスケジュールに基づいてユニットを実行し、.mount および .automount はファイルシステムを処理し、.target は multi-user.target のような状態にユニットをグループ化します。
2ユニットファイルの場所
パッケージは /usr/lib/systemd/system (または /lib/systemd/system) にユニットをインストールします。ローカルでの変更は /etc/systemd/system に配置し、こちらが優先されます。systemctl edit <unit> を使用すると、パッケージ化されたファイルを直接変更する代わりに、ドロップイン形式のオーバーライドを作成できます。
3日常的なコマンド
systemctl status <unit> は状態と最新のログ行を表示します。'start'、'stop'、'restart' は即時に実行され、'enable' と 'disable' は起動時の開始を制御します。'enable --now' はその両方を行います。systemctl --failed は失敗したユニットを一覧表示し、systemctl daemon-reload は変更後にユニットファイルを再読み込みします。
失敗したサービスの確認方法
- 失敗したユニットを一覧表示:
systemctl --failed - 状態と最近のメッセージを表示:
systemctl status <unit> - 今回の起動時の全ログを読み取る:
journalctl -u <unit> -b - 設定を修正した後:
sudo systemctl restart <unit>
注意点
/usr/lib/systemd/system内のファイルを直接編集せず、systemctl editを使用してパッケージ化されたユニットを変更してください。アップデートによって上書きされるためです。- systemd-journald や dbus など、不明なユニットを無効にしないでください。
関連記事
- journalctl と systemd ジャーナルjournalctl を使用したログの読み取り方法、ジャーナルが使用している容量の確認方法、および --vacuum オプションを使用して安全に縮小する方法について解説します。
- cron と crontabcron がどのようにスケジュールされたジョブを実行するか、crontab の5つの時間フィールド、システム cron ファイルの場所、および systemd タイマーとの比較について解説します。
- logrotatelogrotateの機能、/etc/logrotate.confおよび/etc/logrotate.dでの設定方法、ルールを安全にテストする方法について解説します。
出典
- systemctl(1) man7.org
- systemd.unit(5) man7.org
- systemd.timer(5) man7.org
最終確認: