それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

systemd のファイルについて

systemd のファイルについて

debian での systemd の構成について調べた

systemd のユニットファイルが置かれている場所

  • /lib/systemd/
  • /usr/lib/systemd/
  • /etc/systemd/

など locate で探すと結構たくさんあってどうなってるのか面食らう。なので役割分担と、優先順位について学んでおいたほうが良さそうだ。

/lib/systemd/

systemd のファイルは基本的に /lib/systemd/に置かれる。

おもに、起動するサービスやジョブとターゲットの各記述がここに置かれている。

/usr/lib/systemd/ には pkgインストールしたモノを置くようだ。

/lib/usr/libLinuxのFHSファイルシステムレイアウトに従うと考えて問題なさそう。

FHSに従うので、ディストリが使うのが /lib 。一方でユーザ全体で使うのが /usr/lib ってことになる。個人ユーザーは /home/を使う。 *1

Debianだと /usr/lib/systemd/ の中身は /lib/systemd へのaliasになってる。

次のように、 path.targets などターゲットは /lib/systemd/の該当部分へのエイリアスになっている。

takuya@:~$ ll -ls /usr/lib/systemd/*
/usr/lib/systemd/catalog:
合計 52K
12K -rw-r--r-- 1 root root 9.7K 2017-01-05 08:42 systemd.catalog
12K -rw-r--r-- 1 root root  10K 2017-01-05 08:42 systemd.fr.catalog
12K -rw-r--r-- 1 root root 9.2K 2017-01-05 08:42 systemd.it.catalog
16K -rw-r--r-- 1 root root  14K 2017-01-05 08:42 systemd.ru.catalog

/usr/lib/systemd/network:
合計 0

/usr/lib/systemd/ntp-units.d:
合計 4.0K
4.0K -rw-r--r-- 1 root root 26 2017-01-05 08:42 90-systemd.list

/usr/lib/systemd/user:
合計 20K
4.0K -rw-r--r-- 1 root root 457 2017-01-05 08:42 basic.target
   0 lrwxrwxrwx 1 root root  36 2017-01-05 08:42 bluetooth.target -> /lib/systemd/system/bluetooth.target
4.0K -rw-r--r-- 1 root root 414 2017-01-05 08:42 default.target
4.0K -rw-r--r-- 1 root root 499 2017-01-05 08:42 exit.target
4.0K -rw-r--r-- 1 root root 166 2015-01-04 02:42 obex.service
   0 lrwxrwxrwx 1 root root  32 2017-01-05 08:42 paths.target -> /lib/systemd/system/paths.target
   0 lrwxrwxrwx 1 root root  34 2017-01-05 08:42 printer.target -> /lib/systemd/system/printer.target
   0 lrwxrwxrwx 1 root root  35 2017-01-05 08:42 shutdown.target -> /lib/systemd/system/shutdown.target
   0 lrwxrwxrwx 1 root root  36 2017-01-05 08:42 smartcard.target -> /lib/systemd/system/smartcard.target
   0 lrwxrwxrwx 1 root root  34 2017-01-05 08:42 sockets.target -> /lib/systemd/system/sockets.target
   0 lrwxrwxrwx 1 root root  32 2017-01-05 08:42 sound.target -> /lib/systemd/system/sound.target
4.0K -rw-r--r-- 1 root root 497 2017-01-05 08:42 systemd-exit.service
   0 lrwxrwxrwx 1 root root  33 2017-01-05 08:42 timers.target -> /lib/systemd/system/timers.target

/usr/lib/systemd/user-generators:
合計 0

ただしCentOSなどは /usr/lib と /libの区別を無くす方向なのかな?それで /usr/lib を使うようになってるみたい。

/etc/systemd

ここにはLinuxの設定として設置される。 /usr/lib/systemd よりも優先される。 実際には、 /etc/systemd には /lib/systemd への alias も数多く置かれている。

つまり units(job/service/target)の実体は /lib/systemd だが、/etc/systemd だけをみてわかるようにおいているんだろうと考えて問題なさそう。

etc はその他に systemd で journal や system.conf などのsystemd の根幹の設定が置かれているのが特徴かな。

ターゲットは /lib/systemd/system 由来のものを持ってきている。

takuya@:~$ ll -ls /etc//systemd/system

/etc//systemd/system:
合計 68K
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 bluetooth.target.wants
   0 lrwxrwxrwx 1 root root    9 2016-09-24 03:52 corosync.service -> /dev/null
   0 lrwxrwxrwx 1 root root   37 2016-06-13 22:10 dbus-org.bluez.service -> /lib/systemd/system/bluetooth.service
   0 lrwxrwxrwx 1 root root   40 2016-06-13 22:10 dbus-org.freedesktop.Avahi.service -> /lib/systemd/system/avahi-daemon.service
   0 lrwxrwxrwx 1 root root   40 2016-06-13 22:10 dbus-org.freedesktop.ModemManager1.service -> /lib/systemd/system/ModemManager.service
   0 lrwxrwxrwx 1 root root   53 2016-06-13 22:10 dbus-org.freedesktop.nm-dispatcher.service -> /lib/systemd/system/NetworkManager-dispatcher.service
   0 lrwxrwxrwx 1 root root   35 2017-03-16 16:16 display-manager.service -> /lib/systemd/system/lightdm.service
4.0K drwxr-xr-x 2 root root 4.0K 2016-11-05 15:35 getty.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2017-03-16 15:48 graphical.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 halt.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 hibernate.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 hybrid-sleep.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:11 local-fs.target.wants
4.0K -rw-r--r-- 1 root root  303 2016-10-29 16:04 mgetty.service
4.0K drwxr-xr-x 2 root root 4.0K 2017-03-16 22:14 multi-user.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 paths.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 poweroff.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 printer.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 reboot.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-11-09 19:05 sockets.target.wants
   0 lrwxrwxrwx 1 root root    9 2016-09-24 03:51 spiceproxy.service -> /dev/null
   0 lrwxrwxrwx 1 root root   31 2016-06-13 22:10 sshd.service -> /lib/systemd/system/ssh.service
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:10 suspend.target.wants
4.0K drwxr-xr-x 2 root root 4.0K 2016-06-13 22:11 sysinit.target.wants
   0 lrwxrwxrwx 1 root root   35 2016-06-13 22:10 syslog.service -> /lib/systemd/system/rsyslog.service

優先度

あとのほうが優先。

  • /lib/systemd/system/
  • /usr/lib/systemd/system/
  • /etc/systemd/system/

あとのものと先のもので同名がアレば、上書きされるとのこと。

参考資料

http://enakai00.hatenablog.com/entry/20130917/1379374797

*1:後述するが systemd はユーザー毎のユニットが存在する。