Linux 伺服器系統管理第八章 系統更新與擴充  上一頁    下一頁

8-3 變更核心參數

內容:

  • 8-3-1 系統參數 - /proc/sys/

  • 8-3-2 核心參數 - /proc/sys/kernel

  • 8-3-3 參數操作命令 - sysctl

  • 8-3-4 核心組態檔案 - /etc/sysctl.d

當系統啟動時,系統會依照所選定的 Runlevel,執行某些 RC Script,此時會建立一些相關聯的系統參數並儲存於 /proc 目錄下,而且將屬性相同的參數以同一檔案方式儲存。

8-3-1 系統參數 - /proc/sys/

系統參數大多記錄於 /proc/sys/ 目錄底下,在 /proc/ 目錄下也僅有此目錄下的資料可以修改,其他目錄或檔案大多僅供系統操作,並不允許管理者去變更它。一般 /proc/sys 目錄有下列次目錄:

[root@tsnien ~]# ls /proc/sys

abi  crypto  debug  dev  fs  kernel  net  sunrpc  vm

每一目錄儲存屬性相同的參數,各目錄屬性如下:

  • debug :儲存系統除錯(Debug)的相關訊息。

  • dev :儲存設備檔案(Device file)運作中的相關訊息。

  • fs :儲存檔案系統(File system)運作中的相關訊息。

  • kernel :儲存核心(Kernel)運作中的相關訊息。

  • net :儲存網路(Network)運作中的相關訊息。

  • proc :儲存行程(Process)運作中的相關訊息。

  • sunrpc :儲存 Sun RPC 子系統運作中的相關訊息。

  • vm :儲存虛擬記憶體(Virtual memory)子系統運作中的相關訊息。

上述目錄或子目錄下的檔案,並不一定會儲存資料,某些目錄或檔案是空閒著,有可能是該子系統還未被啟動,運行中的子系統並沒有可供修改的參數(如 proc)。

8-3-2 核心參數 - /proc/sys/kernel/

我們的重點是如何更新核心參數,其儲存於 /proc/sys/kernel/ 目錄下,範例如下:(本書範例)

[root@tsnien ~]# ls /proc/sys/kernel

acct                               panic_on_warn

acpi_video_flags                   perf_cpu_time_max_percent

auto_msgmni                        perf_event_max_sample_rate

bootloader_type                    perf_event_mlock_kb

bootloader_version                 perf_event_paranoid

cad_pid                            pid_max

….

上述中每一檔案儲存一個參數的內容,以本書範例所設定的『網域名稱』(Domain name)為例,該參數(domainname)的內容如下:

[root@tsnien ~]# cat /proc/sys/kernel/domainname

(none)

如欲變更某一參數內容,只要直接修改其內容即可,大多利用 echo 命令就可達成,操作範例如下:

[root@tsnien ~]# echo "tsnien.idv.tw" > /proc/sys/kernel/domainname

[root@tsnien ~]# cat /proc/sys/kernel/domainname

tsnien.idv.tw

[root@tsnien ~]#

利用命令直接更新參數的內容,如果重新開機之後,所變更的內容會回復成原來的值,所以還是必須將所欲變更的內容填入 /etc/rc.d/rc.local 檔案內,每次開機才會被執行到)。範例如下:

[root@tsnien ~]# cat /etc/rc.d/rc.local

#!/bin/bash

# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES

#

# It is highly advisable to create own systemd services or udev rules

# that this script will be executed during boot.

 

touch /var/lock/subsys/local

 

echo "tsnien.idv.tw" > /proc/sys/kernel/domainname

8-3-3 參數操作命令 - sysctl

除了直接修改參數檔案內容之外,我們也可利用 sysctl 命令(/sbin/sysctl)修改參數內容,變更 hostname 參數的操作範例如下:

# sysctl -w kernel.hostname=csu_linux 【變更參數內容,等號前後不可以空格】

kernel.hostname = csu_linux

# sysctl  kernel.hostname              【顯示參數內容】

kernel.hostname = csu_linux

# cat /proc/sys/kernel/hostname              【顯示參數內容】

csu_linux

8-3-4 核心組態檔案 - /etc/sysctl.d/

系統啟動時,會依據 /usr/lib/sysctl.d//run/sysctl.d/ /etc/sysctl.d 等目錄下設定檔設定系統參數。/usr/lid/sysctl.d/ 是軟體開發者設定的參數,可能會被 /etc/sysctl.d/ 規劃檔重新設定,另外 /run/sysctl.d/ 是系統執行當然也可以將 sysctl 命令寫入 /etc/rc.d/rc.local 檔案內,每次重新啟動時會再執行當中,所設定的系統參數,優先權最高。一般系統管理者可以在 /etc/sysctl.d/ 下變更參數內容。

[root@tsnien ~]# ls /etc/sysctl.d

99-sysctl.conf

[root@tsnien ~]# cat /etc/sysctl.d/99-sysctl.conf

# sysctl settings are defined through files in

# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.

#

# Vendors settings live in /usr/lib/sysctl.d/.

# To override a whole file, create a new file with the same in

# /etc/sysctl.d/ and put new settings there. To override

# only specific settings, add a file with a lexically later

# name in /etc/sysctl.d/ and put new settings there.

#

# For more information, see sysctl.conf(5) and sysctl.d(5).

每一行表示一筆參數的設定,在每行的最前面是井號(#)表示該行為註解使用。又設定變數等號(=)的前後允許空格。

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: