在典型的 Linux 机器上,您可以通过修改位于的文件来更改内核配置/proc/*
。
例如,对于accept_dad
特定网络接口(例如eth0
)的 IPv6 参数,您需要修改以下文件:
/proc/sys/net/ipv6/conf/eth0/accept_dad
但是,正如我最近发现的,有一种广泛传播的工具,sysctl
它具有相同的用途,其工作原理如下:
sysctl -w net.ipv6.conf.eth0.accept_dad=1
我的问题是,我们什么时候应该使用哪种工具?我的直觉告诉我,如果你知道自己在做什么,你应该直接写入文件,但是,如果你想要验证等等,你应该使用sysctl
。
由于sysctl
这是我们可以直接控制的另一层,我认为通过使用它,我们会将自己暴露于潜在的错误中,而这些错误可以通过直接写入文件来避免。
答案1
sysctl
是一种读取和修改各种内核属性的工具。它可用于许多类 Unix 操作系统,例如 Linux、OpenBSD 和 FreeBSD。sysctl
通常可用作 shell 命令和系统调用。
在 Linux 中,该sysctl
机制还作为进程虚拟文件系统,在 下/proc/sys
。
请注意sysctl
系统调用在 Linux 中已弃用;建议使用/proc/sys
(直接或通过sysctl
shell 命令)。
参考:
答案2
sysctl
是一个用于与 交互的实用程序/proc
。一般来说,它们完成相同的任务。我猜想,几年前(几十年前?),调整内核参数的唯一方法是手动编辑“文件” /proc
,sysctl
后来出现了一种更文明的搜索和修改内核参数的方法。
值得注意的是,编辑在/proc
重启后不会保留。如果您正在试验,这很方便。该文件/etc/sysctl.conf
是存储您sysctl
想要在启动时保留的更改的地方。如果您真的喜欢编辑文件,您可能只想在那里进行更改并调用sysctl -p
以执行更改。