systemd 常见问题

journalctl

显示内核日志:

~# journalctl -k
~# journalctl -t kernel

显示设备单元

~# systemctl --all --full -t device

systemd-networkd

使用 networkctlnetworkctl list 命令显示网卡列表:

~# networkctl
IDX LINK TYPE     OPERATIONAL SETUP
  1 lo   loopback carrier     unmanaged
 12 eth0 ether    routable    configured

增加一个 DHCP 的网络配置:

~# cat > /etc/systemd/network/20-wired.network
[Match]
Name=eth0

[Network]
DHCP=yes

[DHCPv4]
UseDNS=no

或者静态地址的网络配置:

~# cat > /etc/systemd/network/20-wired.network
[Match]
Name=eth0

[Network]
Address=10.1.10.9/24
Gateway=10.1.10.1
DNS=10.1.10.1

配置完成之后就可以使用 networkctl reload 命令刷新。

systemd-resolved DNS 服务器

修改 /etc/systemd/resolved.conf 配置 DNS 服务器地址:

~# cat /etc/systemd/resolved.conf
[Resolve]
DNS=114.114.114.114

启动 systemd-resolved DNS 服务器:

~# systemctl start systemd-resolved
~# systemctl enable systemd-resolved

可以使用 resolvectlsystemd-resolve --status 命令确认 DNS 服务器状态。

如果不存在 /etc/resolv.conf 文件,也可以创建链接:

~# ln -sfn /usr/lib/systemd/resolv.conf /etc/resolv.conf

运行时启用的服务

某些服务可能被禁用后也会在运行时启用:

~# systemctl is-enabled serial-getty@ttyAMA0.service
enabled-runtime

可以在 Generators 中查找依赖:

~# ls -l /run/systemd/generator/getty.target.wants/serial-getty@ttyAMA0.service
lrwxrwxrwx 1 root root 41 4月   2 01:37 /run/systemd/generator/getty.target.wants/serial-getty@ttyAMA0.service -> /lib/systemd/system/serial-getty@.service

如果需要强制禁用,可以:

~# systemctl mask serial-getty@ttyAMA0.service
Created symlink /etc/systemd/system/serial-getty@ttyAMA0.service → /dev/null.

此时的 is-enabled 状态:

~# systemctl is-enabled serial-getty@ttyAMA0.service
masked

也可以恢复:

~# systemctl unmask serial-getty@ttyAMA0.service
Removed /etc/systemd/system/serial-getty@ttyAMA0.service.