Есть два пакета, которые влияют на поведение параметров ядра sysctl.
1. systemd
Этот пакет применяет конфигурацию после перезагрузки.
# rpm -qf /usr/lib/systemd/systemd-sysctl systemd-219-19.el7.x86_64
2. procps-ng
Этот пакет реализован во время выполнения.
Если бы вы выполнили «sysctl -p», это вызвало бы «sysctl –system».
# rpm -qf /usr/sbin/sysctl procps-ng-3.3.10-3.el7.x86_64
Согласно файлу конфигурации /etc/sysctl.conf:
# cat /etc/sysctl.conf # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/. # # Vendors settings live in /usr/lib/sysctl.d/. # To override a whole file, create a new file with the same in # /etc/sysctl.d/ and put new settings there.
Каталоги выполняются в следующем порядке.
1) /run/sysctl.d/*.conf 2) /etc/sysctl.d/*.conf 3) /usr/local/lib/sysctl.d/*.conf 4) /usr/lib/sysctl.d/*.conf 5) /lib/sysctl.d/*.conf 6) /etc/sysctl.conf
# egrep -i "apply|\/run\/sysctl.d|\/etc\/sysctl.d|\/usr\/local\/lib" strace_system.txt | awk '{print $2,$3,$4,$5,$6}' 08:11:40.809100 openat(AT_FDCWD, "/run/sysctl.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 08:11:40.809125 openat(AT_FDCWD, "/etc/sysctl.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 08:11:40.809152 getdents(3, {{d_ino=33560885, d_off=4, d_reclen=24, 08:11:40.809192 getdents(3, {}, 32768) = 08:11:40.809212 close(3) = 0 <0.000004> 08:11:40.809229 openat(AT_FDCWD, "/usr/local/lib/sysctl.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 08:11:40.809783 write(1, "* Applying /usr/lib/sysctl.d/00-"..., 08:11:40.811177 write(1, "* Applying /usr/lib/sysctl.d/50-"..., 08:11:40.814209 write(1, "* Applying /etc/sysctl.d/99-sysc"..., 08:11:40.814249 open("/etc/sysctl.d/99-sysctl.conf", O_RDONLY) = 3 08:11:40.814582 write(1, "* Applying /etc/sysctl.conf
Наконец, каталог /etc/sysctl.d/ выполняется потому, что файлы в /etc/ переопределяют файлы с одинаковыми именами в /run/ и /usr/lib/
.