systemd

systemdって何?

最近、マルチコアのCPUが普通になったため、並列処理のできないsysv initは時代遅れになった。

代わりに最近使われるのがsystemd。

systemdではシェルスクリプトではなくUnitと呼ばれる設定ファイルを記述し、並列処理ができるところではできる限り並列処理を行う。

なんだか、単なる並列のinitシステムではなく、新しいLinuxの管理ツールのデファクトスタンダードになりつつある。

それもそのはず、Linuxの開発者たちは「無意味なLinuxディストリビューション間の差異をなくす」ために、systemdを位置付けて開発している。

だが、複雑怪奇なsystemdは賛否両論を生んでおり、systemdを排除したDevuanのようなディストリビューションも開発されている。

systemdのコマンド

たとえば、

systemctl start httpd.service

とすれば、httpdのサービスが起動する。

startのほか、restart(再起動), stop(停止), reload(設定の再読み込み), status(情報表示), show(情報表示2)などがある。また、enable, disableで自動起動を有効化・無効化できるほか、is-enabledで有効・無効の確認ができる。

systemdの仕組み

システム標準のUnitファイルは/usr/lib/systemd/system/にあり、管理者による設定は/etc/systemd/system/にUnitファイルを置いて行う。

Unitファイルは、前後関係と依存関係によって成り立つ。前後関係があるUnitについてはその順序を守り、前後関係のないUnitについてはすべて並列で起動する。

また、udevのデフォルトの設定(ルール)は/usr/lib/udev/rules.dに、管理者によるルールは/etc/udev/rules.dにある。

ネームサーバーの設定

systemd-resolved がインストールされている場合、DNS の設定は /etc/systemd/resolved.conf などに記述されます。

# See resolved.conf(5) for details

[Resolve]
DNS=1.1.1.1 1.0.0.1
FallbackDNS=94.140.14.14 94.140.15.15 
DNSSEC=true
DNSOverTLS=true
Cache=yes

systemd-resolve サービスの再起動(deb系の場合)

$sudo systemctl restart systemd-resolved.service

設定の確認

$resolvectl status
最終更新:2025年04月24日 10:08