systemd学习之systemd-sysctl

402 阅读1分钟

systemd-sysctl

/systemd-sysctl.service负责在系统启动时配置内核参数。

概述

systemd-sysctl.service 服务 在系统启动的早期 通过调用 /usr/lib/systemd/systemd-sysctl 工具配置 sysctl(8) 内核参数。

如果不使用任何参数调用 /usr/lib/systemd/systemd-sysctl 命令, 那么将应用 sysctl.d(5) 目录下(/etc/sysctl.d/*.conf/run/sysctl.d/*.conf/usr/lib/sysctl.d/*.conf)所有配置文件中的指令。如果明确指定了一个或多个文件名, 那么将仅应用指定的配置文件中的指令。配置文件格式如下:

# 使用.和/是一样的,都会将 "example.com" 写入 /proc/sys/kernel/domainname
kernel.domainname=example.com
kernel/domainname=example.com
# /proc/sys/net/ipv4/conf/enp3s0.200/forwarding
net/ipv4/conf/enp3s0.200/forwarding=1

sysctl

sysctl 可以在运行时配置内核参数。所有可用参数都位于 /proc/sys/ 目录下。

SYSTEM FILE优先级

当使用--system参数的时候,sysctl会按照以下顺序读取系统文件,一旦一个给定文件名的文件被加载后续目录中的相同名称将被忽略

/etc/sysctl.d/*.conf
/run/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf

示例用法

# 显示所有参数
/sbin/sysctl -a
# 显示特定参数
/sbin/sysctl -n kernel.hostname
# 设置参数
/sbin/sysctl -w kernel.domainname="example.com"
# 根据文件设置参数
/sbin/sysctl -p /etc/sysctl.conf
# 正则匹配显示参数
/sbin/sysctl -a --pattern forward$
/sbin/sysctl -a --pattern 'net.ipv4.conf.(eth|wlan)0.arp'
# --system 载入所有配置
/sbin/sysctl --pattern '^net.ipv6' --system

用例

生效所有sysctl配置

systemctl restart systemd-sysctl

查看特定的设置

sysctl kernel.core_pattern

应用特定的sysctl配置

仅应用名为 50-coredump.conf 的配置文件中的所有指令。 也就是从 /etc/sysctl.d/50-coredump.conf/run/sysctl.d/50-coredump.conf/usr/lib/sysctl.d/50-coredump.conf中, 以第一个找到的为准。

/usr/lib/systemd/systemd-sysctl 50-coredump.conf