11.9. 使用 sysctl(8) 調校

sysctl(8) 可用來更改執行中的 FreeBSD 系統,這包含許多 TCP/IP 堆疊及虛擬記憶體系統的進階選項,讓有經驗的系統管理者能夠簡單的提升效能。有超過五百個系統變數可以使用 sysctl(8) 來讀取與設定。

sysctl(8) 主要提供兩個功能:讀取與修改系統設定。

檢視所有可讀取的變數:

% sysctl -a

要讀取特定變數只要指定其名稱:

% sysctl kern.maxproc
kern.maxproc: 1044

要設定特定變數可使用 variable=value 語法:

# sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000

sysctl 的設定值通常為字串、數字或布林值,其中布林值的 1 代表是,0 代表否。

要在每次機器開機時自動設定一些變數可將其加入到 /etc/sysctl.conf。要取得更多的資訊請參考 sysctl.conf(5)節 11.9.1, “sysctl.conf

11.9.1. sysctl.conf

sysctl(8) 的設定檔於 /etc/sysctl.conf,內容很像 /etc/rc.conf,設定數值使用 variable=value 格式。指定的數值會在系統進入多使用者模式時設定,但並非所有變數皆可在此模式設定。

例如,要關閉嚴重信號 (Fatal signal) 中止的記錄並避免使用者看到其他使用者所執行的程序,可加入以下設定到 /etc/sysctl.conf

# Do not log fatal signal exits (e.g., sig 11)
kern.logsigexit=0

# Prevent users from seeing information about processes that
# are being run under another UID.
security.bsd.see_other_uids=0

11.9.2. 唯讀 sysctl(8)

Contributed by Tom Rhodes.

在有些情況可能會需要修改唯讀的 sysctl(8) 數值,而這會需要重新啟動系統。

例如,某些筆電型號的 cardbus(4) 裝置無法偵測到記憶體範圍而且會失效並有類似以下的錯誤:

cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12

這個修正需要修改唯讀的 sysctl(8) 設定。加入 hw.pci.allow_unsupported_io_range=1/boot/loader.conf 然後重新啟動。現在 cardbus(4) 應可正常運作。

本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。

關於本文件的問題,請洽詢 <doc@FreeBSD.org>。