systemd のファイルについて
debian での systemd の構成について調べた
systemd のユニットファイルが置かれている場所
- /lib/systemd/
- /usr/lib/systemd/
- /etc/systemd/
など locate で探すと結構たくさんあってどうなってるのか面食らう。なので役割分担と、優先順位について学んでおいたほうが良さそうだ。
/lib/systemd/
systemd のファイルは基本的に /lib/systemd/
に置かれる。
おもに、起動するサービスやジョブとターゲットの各記述がここに置かれている。
/usr/lib/systemd/
には pkgインストールしたモノを置くようだ。
/lib
と /usr/lib
は Linuxの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 はユーザー毎のユニットが存在する。