Ade*_*lin 8 linux linux-networking sysctl proc
在典型的 Linux 机器上,您可以通过修改位于 的文件来更改内核配置/proc/*
。
例如,对于accept_dad
特定网络接口(例如eth0
)的 IPv6 参数,您需要修改以下文件:
/proc/sys/net/ipv6/conf/eth0/accept_dad
Run Code Online (Sandbox Code Playgroud)
但是,正如我最近发现的,有一个广泛传播的工具,sysctl
它具有相同的目的,并且工作原理如下:
sysctl -w net.ipv6.conf.eth0.accept_dad=1
Run Code Online (Sandbox Code Playgroud)
我的问题是,我们什么时候应该使用哪种工具?我的直觉告诉我,如果您知道自己在做什么,则应该直接写入文件,但是,如果您想要验证而不需要什么,则应该使用sysctl
.
由于sysctl
是我们可以直接控制的东西的另一层,我认为通过使用它,我们将自己暴露在潜在的错误中,而这些错误是通过直接写入文件来避免的。
sysctl
是一个读取和修改各种内核属性的工具。它可以在许多类 Unix 操作系统中使用,不仅包括 Linux,还包括 OpenBSD 和 FreeBSD。sysctl
通常既可以作为 shell 命令也可以作为系统调用使用。
在 Linux 中,该sysctl
机制还作为procfs虚拟文件系统的一部分公开,位于/proc/sys
.
请注意, Linux 中不推荐使用该sysctl
系统调用;建议使用(直接或通过shell 命令)。/proc/sys
sysctl
参考: