systemd ... SysVinit との違いと動作について その6
当日記ではアフィリエイト広告を利用しています
前回は、systemd の service unit の先頭文字が l 〜 r までの 23 units について、機能を調べてみた。
hiro20180901.hatenablog.com
今回は、systemd-* を除く s 〜 z までの 20 units について調べてみた。
$ systemctl list-unit-files [s-z]*.service | grep \.service | grep -v ^systemd sendsigs.service masked serial-getty@.service disabled single.service masked spice-vdagent.service enabled spice-vdagentd.service enabled ssh.service enabled ssh@.service static stop-bootlogd-single.service masked stop-bootlogd.service masked sudo.service disabled udev.service static udisks2.service disabled umountfs.service masked umountnfs.service masked umountroot.service masked urandom.service static usbmuxd.service static user@.service static wacom-inputattach@.service static x11-common.service masked
sendsigs
/dev/null に symbolic link されていて masked なので使用されていない。SysVinit 時代で runlevel 6 で reboot する際に、最初に実行されて killall する init scrip らしい。
serial-getty@
これは getty で取り上げたが、実際の serial line 用の template unit。
single
/dev/null に symbolic link されていて masked なので使用されていない。ググっても情報がないのでよく分からず。man systemd.special に記載が無いので emergency や rescue とも違う。
spice-vdagentd、spice-vdagent
hiro20180901.hatenablog.com
kvm (qemu) で使用している spice-vdagentd の unit で、spice-vdagent package から install されている。spice-vdagent は spice-vdagentd への symbolic link なので同一のもの。spice-vdagentd.target も存在している。kvm (qemu) 仮想マシン側では有効となっていて、kvm (qemu) の起動 option に設定すれば、仮想マシンと実マシンの間で cut & paste が有効になる。
ただし、仮想マシン側で systemctl list-dependency に spice-vdagent* は表示されていない。依存関係で起動している訳ではない。といって、実マシン側でも install したが static のままで起動していない。spice-vdagentd.service の中に
# TODO we should use: #Requires=spice-vdagentd.socket
と記載があるので、本来なら socket で起動させる物を service で起動させているか、或いは udev rule が存在しているので udev 経由で起動させているか、どちらかと思う。
debian の spice-vdagent package の postinst には spice-vdagentd.socket についての処理も入っているので、将来的には対応されるのかも。ちなみに、deb package を直接 download して、dpkg -x packagename path で package を展開、dpkg -e packagename path で postinst 等の control-infomation を展開できる(備忘録)。
ssh、ssh@
ssh は openssh-server から install されている unit。multi-user.target.wants に symbolic link が入っているので、依存関係で起動されている。ちょっと分からないのが、
- template unit の ssh@.service が存在している事。外から ssh で入っても、template unit から生成される unit は起動していない。
- 同名の ssh.socket が入っているが disable になっている。
- /etc/systemd/system に sshd.service として symbolic link が存在しているが、有効になっていない。
ssh の様に SysVinit 時代から存在している daemon は、起動すれば自分自身で port で待ち受けるので(ssh だと 22/tcp、22/udp)、socket unit は不要なのだろうか。だとすれば、ssh.socket は不要に思うのだが...
stop-bootlogd-single、stop-bootlogd
どちらも /dev/null への link で masked。system boot 時の log を記録する為の bootlogd の停止用の unit だと思う。systemd では log の記録は journald で行われているので不要。bootlogd package の Description にも書かれている。
sudo
sudo package から install されている unit。multi-user.target を WantedBy しているが、disable になっている。sudo は効いているので、この unit が何故あるのかは不明。
udev
udev 用の unit。これは後で調べてみる。
udisks2
udisks2 package から install されている unit。
wiki.archlinux.jp
PolicyKit と dbus、udev で removable media の管理をする。dbus 経由で起動するので、disabled だが running の状態になる。
umount*
umountfs、umountnfs、umountroot の3つ共に /dev/null への symbolic link。umount.target が存在していて、
man systemd.special:
A special target unit that unmounts all mount and automount points on system shutdown.
なので、shutdown 時に実行される unit。
urandom
systemd-random-seed.service への symbolic link。urandom は static。systemd-random-seed の方が起動時に one shot で動作し、active で exit されている。
usbmuxd
Apple device の usbmux protocol 用の daemon。usbmaxd package から入っているが、udev で Apple device が認識された際に起動する為、今の状態では disable。
user@
user mode の systemd を起動する為の unit。template unit なので、systemd-cgls を見ると '@' 以降に UID が付いた形で、1000 (lightdm) と 100 (user) が起動している。systemd-cgls の tree を見ると、各 unit の関係がよく分かる。
wacom-inputattach@
static。xserver-xorg-input-wacom package から入っている。wacom の pen tablet は使用していないので、apt remove --purge して削除した。
x11-common
/dev/null に symbolic link で masked。SysVinit との互換の為か。
結果
- systemd service の先頭文字が s 〜 z の unit について機能を調べてみた。
- やはり /dev/null への symbolic link が多い。存在する意味がまだ分からない。
- spice-vdagent package を実マシン側に入れていたが不要なので削除した。仮想マシン側だけ入れておけば大丈夫。
- 残りは systemd*.service の 44 units。これらを調べて有効な情報が手に入ることを期待する。