11.9. 使用 sysctl(8) 調校
前一頁 | 章 11. 設定與調校 | 下一頁

## 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) 應可正常運作。

前一頁 | 上一層 | 下一頁
11.8. 設定檔 | 起始頁 | 11.10. 調校磁碟

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

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