如何在 Linux 中重新加载 sysctl.conf 变量
sysctl 命令用于在运行时修改 Linux 内核变量。使用 procfs 从 /proc/sys/ 位置读取和写入变量。本页介绍如何从 CLI 重新加载 sysctl.conf Linux 内核变量而无需重新启动计算机。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 系统管理 |
操作系统兼容性 | Alma • Alpine • Amazon Linux • Arch • CentOS • Debian • Fedora • Linux • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • WSL |
预计阅读时间 | 2 分钟 |
定义 Linux 内核值
定义变量的语法如下:
variable=value
我们使用以下形式variable=value:variable 是键,value 是要设置的值。如果值包含引号或 shell 解析的字符,则可能需要将值括在双引号中。例如:
variable="10 20 30"
从命令行读取 Linux 变量
打开终端应用程序,然后键入以下命令:
$ sysctl kernel.ostype
这是我看到的:
kernel.ostype = Linux
要查看所有变量,请-a按如下方式传递选项:
示例输出:
$ sysctl -a
# use the more command/grep command as filter #
$ sysctl -a | grep kernel
$ sysctl -a | more
dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17 dev.cdrom.info = dev.cdrom.info = drive name: dev.cdrom.info = drive speed: dev.cdrom.info = drive # of slots: dev.cdrom.info = Can close tray: dev.cdrom.info = Can open tray: dev.cdrom.info = Can lock tray: dev.cdrom.info = Can change speed: dev.cdrom.info = Can select disk: dev.cdrom.info = Can read multisession: dev.cdrom.info = Can read MCN: dev.cdrom.info = Reports media changed: dev.cdrom.info = Can play audio: dev.cdrom.info = Can write CD-R: dev.cdrom.info = Can write CD-RW: dev.cdrom.info = Can read DVD: dev.cdrom.info = Can write DVD-R: dev.cdrom.info = Can write DVD-RAM: dev.cdrom.info = Can read MRW: dev.cdrom.info = Can write MRW: dev.cdrom.info = Can write RAM: dev.cdrom.info = dev.cdrom.info = dev.cdrom.lock = 0 dev.hpet.max-user-freq = 64 dev.i915.oa_max_sample_rate = 100000 ..... .. vm.oom_kill_allocating_task = 0 vm.overcommit_kbytes = 0 vm.overcommit_memory = 0 vm.overcommit_ratio = 50 vm.page-cluster = 3 vm.panic_on_oom = 0 vm.percpu_pagelist_fraction = 0 vm.stat_interval = 1 vm.swappiness = 60 vm.unprivileged_userfaultfd = 1 vm.user_reserve_kbytes = 131072 vm.vfs_cache_pressure = 100 vm.watermark_boost_factor = 0 vm.watermark_scale_factor = 10 vm.zone_reclaim_mode = 0
正则表达式支持
我们只能应用与模式匹配的设置。模式使用扩展的正则表达式语法。例如:
# sysctl -a --pattern forward
# sysctl -a --pattern forward$
# sysctl -a -r version
从命令行写入变量
语法为:
# sysctl -w variable=value
要启用 IPv4 数据包转发,请输入:
# sysctl -w net.ipv4.ip_forward=1
如何在 Linux 上重新加载 sysctl.conf 变量
键入以下命令来从配置文件中重新加载设置而无需重新启动计算机:
# sysctl --system
从以下所有系统配置文件中读取设置:
- /运行/sysctl.d/*.conf
- /etc/sysctl.d/*.conf
- /usr/local/lib/sysctl.d/*.conf
- /usr/lib/sysctl.d/*.conf
- /lib/sysctl.d/*.conf
- /etc/sysctl.conf
持久配置
您需要编辑 /etc/sysctl.conf 或 /etc/sysctl.d/ 目录中的文件。您的自定义 Linux 内核系统变量通常进入 /etc/sysctl.d/1000-custom.conf 文件:
# vi /etc/sysctl.conf
或者
# vi /etc/sysctl.d/1000-custom.conf
修改或添加文件。例如:
vm.max_map_count=262144 vm.mmap_min_addr=65536 net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr net.ipv4.ip_nonlocal_bind=1
关闭并保存文件。要从指定文件或 /etc/sysctl.conf(如果未指定)加载 sysctl 设置,请输入:
# sysctl -p
让我们从名为 /etc/sysctl.d/1000-custom.conf 的文件中读取值:
$ sudo sysctl -p /etc/sysctl.d/1000-custom.conf
# OR
$ sudo sysctl --load=/etc/sysctl.d/1000-custom.conf
# OR
$ sudo sysctl -f /etc/sysctl.d/1000-custom.conf
获取帮助
输入 man 命令或 help 命令来阅读安装在 Linux 机器上的文档:
输出:
$ man sysctl
$ sysctl --help
Usage: sysctl [options] [variable[=value] ...] Options: -a, --all display all variables -A alias of -a -X alias of -a --deprecated include deprecated parameters to listing -b, --binary print value without new line -e, --ignore ignore unknown variables errors -N, --names print variable names without values -n, --values print only values of the given variable(s) -p, --load[=<file>] read values from file -f alias of -p --system read values from all system directories -r, --pattern <expression> select setting that match expression -q, --quiet do not echo variable set -w, --write enable writing a value to variable -o does nothing -x does nothing -d alias of -h -h, --help display this help and exit -V, --version output version information and exit
总结
您学习了如何在 Linux 运行时配置内核参数以及如何从文件重新加载值。
如何在 Linux 中重新加载 sysctl.conf 变量?
sysctl 命令用于在 Linux 中重新加载 sysctl.conf 变量。语法为:
# sysctl -p