tech_memo / linux / systemd


tech_memo/linux

/usr/lib/systemd/system/ と /etc/systemd/system/

参考

優先順位と使い分け

  • Unit設定ファイルは同名ファイルがある場合 /etc/systemd/system/ が優先される
  • /usr/lib/systemd/system/ はデフォルト設定
  • 設定値を変えたい場合は、 /etc/systemd/system/ にコピーして、その値を変更する
  • unit設定ファイルを変更後は、下記の実行が必要
    $ systemctl daemon-reload

OS起動時のsystemdの処理

参考


処理概要

  • systemctl list-dependencies コマンドで、serviceの処理順、依存がみえる
    default.target
    ● ├─accounts-daemon.service
    ● ├─apport.service
    ● ├─display-manager.service
    ● ├─e2scrub_reap.service
    ● ├─grub-common.service
    ● ├─systemd-update-utmp-runlevel.service
    ● └─multi-user.target
    ●   ├─apport.service
    ●   ├─atd.service
    ...
  • default.target が起点。中身は systemctl get-default で確認できる
    $ systemctl get-default
    graphical.target
    
    $ cat /lib/systemd/system/graphical.target
    [Unit]
    Description=Graphical Interface
    Documentation=man:systemd.special(7)
    Requires=multi-user.target
    Wants=display-manager.service
    Conflicts=rescue.service rescue.target
    After=multi-user.target rescue.service rescue.target display-manager.service
    AllowIsolate=yes
  • 大半のサービスは、 multi-user.target(runlevel=3相当) に紐づいて起動される
  • multi-user.ragetに紐づくunitは下記に集約されている
    /lib/systemd/system/multi-user.target.wants/
    /etc/systemd/system/multi-user.target.wants/
  • 各ユニットを上記、multi-user.targetへの紐づける方法(multi-user.target.wantsへの格納方法)は、
    1. ユニットの定義ファイルに、下記を追記
      [Install]
      WantedBy=multi-user.target
    2. systemctl enable <unit> を実行。multi-user.target.wants dir配下にシンボリックリンクが作成される