sysctl 与直接写入 /proc/*

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是我们可以直接控制的东西的另一层,我认为通过使用它,我们将自己暴露在潜在的错误中,而这些错误是通过直接写入文件来避免的。

Gro*_*uez 3

sysctl是一个读取和修改各种内核属性的工具。它可以在许多类 Unix 操作系统中使用,不仅包括 Linux,还包括 OpenBSD 和 FreeBSD。sysctl通常既可以作为 shell 命令也可以作为系统调用使用。

在 Linux 中,该sysctl机制还作为procfs虚拟文件系统的一部分公开,位于/proc/sys.

请注意, Linux 中不推荐使用sysctl系统调用;建议使用(直接或通过shell 命令)。/proc/syssysctl

参考: