Rain WikiWindows · Linux · Android

systemd ユニットと systemctl

サービスsystemd を使用するディストリビューション

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 は変更後にユニットファイルを再読み込みします。

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

  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 など、不明なユニットを無効にしないでください。

出典

  1. systemctl(1) man7.org
  2. systemd.unit(5) man7.org
  3. systemd.timer(5) man7.org

最終確認: