sysctl 与直接写入 /proc/*

sysctl 与直接写入 /proc/*

在典型的 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(直接或通过sysctlshell 命令)。

参考:

答案2

sysctl是一个用于与 交互的实用程序/proc。一般来说,它们完成相同的任务。我猜想,几年前(几十年前?),调整内核参数的唯一方法是手动编辑“文件” /procsysctl后来出现了一种更文明的搜索和修改内核参数的方法。

值得注意的是,编辑在/proc重启后不会保留。如果您正在试验,这很方便。该文件/etc/sysctl.conf是存储您sysctl想要在启动时保留的更改的地方。如果您真的喜欢编辑文件,您可能只想在那里进行更改并调用sysctl -p以执行更改。

相关内容