Linux

sysctl 與直接寫入 /proc/*

  • August 13, 2019

在典型的 linux 機器上,您可以通過修改位於/proc/*.

例如,對於accept_dad特定網路介面的 IPv6 參數(例如eth0),您需要修改以下文件:

/proc/sys/net/ipv6/conf/eth0/accept_dad

但是,正如我最近發現的那樣,有一個廣泛傳播的工具,sysctl它具有相同的目的,並且工作方式如下:

sysctl -w net.ipv6.conf.eth0.accept_dad=1

我的問題是,我們什麼時候應該使用哪個工具?我的直覺告訴我,如果你知道自己在做什麼,你應該直接寫入文件,但是,如果你想要驗證而不是什麼,你應該使用sysctl.

由於sysctl是我們可以直接控制的東西的另一層,我認為通過使用它,我們將自己暴露在潛在的錯誤中,否則這些錯誤可以通過直接寫入文件來避免。

sysctl是用於讀取和修改各種核心屬性的工具。它在許多類 Unix 作業系統中都可用,不僅包括 Linux,還包括 OpenBSD 和 FreeBSD,例如。sysctl通常可用作 shell 命令和系統呼叫。

在 Linux 中,該sysctl機製作為procfs虛擬文件系統的一部分另外公開,位於/proc/sys.

請注意,sysctl系統呼叫在 Linux 中已棄用;建議/proc/sys改用(直接或通過sysctlshell 命令)。

參考:

引用自:https://serverfault.com/questions/946665