章 10. SUSE Linux 的特殊功能

內容目錄

10.1. 特殊軟體套件的資訊
10.2. 虛擬主控台
10.3. 鍵盤配置
10.4. 語言與國家專用的設定

摘要

本章節會提供關於軟體套件、虛擬主控台及鍵盤配置等資訊。介紹 bashcronlogrotate 軟體元件,是因為這些元件自上一版後有所變更或加強。這些元件也許不很重要,但與系統的關係密切,使用者可能想變更它們的預設動作。本章最後一節則會介紹語言與國家的專用設定 (I18N 與 L10N)。


10.1. 特殊軟體套件的資訊

程式 bashcronlogrotatelocateulimitfree 以及檔案 resolv.conf,對系統管理員和許多使用者而言十分重要。線上文件和 info 頁面是兩個很有用的指令資訊來源,但並非隨時都能使用。GNU Emacs 是非常普遍而且很好設定的文字編輯器。

10.1.1. Bash 套件與 /etc/profile

Bash 是 SUSE Linux 的預設外圍程序。如果以它做為登入外圍程序,可以讀取多種起始化檔案。Bash 會以它們顯示在清單中的順序來處理。

  1. /etc/profile

  2. ~/.profile

  3. /etc/bash.bashrc

  4. ~/.bashrc

使用者可以在 ~/.profile~/.bashrc 中建立自訂設定。為了要確保這些檔案能正確的處理,您必須將基本設定從 /etc/skel/.profile/etc/skel/.bashrc 中複製至使用者的主目錄。建議您在更新後,從 /etc/skel 複製設定。請執行下列的外圍程式指令,以避免遺失您調整過的設定。

mv ~/.bashrc ~/.bashrc.old
cp /etc/skel/.bashrc ~/.bashrc
mv ~/.profile ~/.profile.old
cp /etc/skel/.profile ~/.profile

然後個人的調整設定需要從 *.old 檔案再複製回去。

10.1.2. cron 套件

如果您要按照預先定義的時間在背景中自動定期執行指令,可以使用傳統工具 cron。cron 是由特殊格式的時間表格所驅動的。其中某些表格是由系統提供,使用者可以視需要撰寫自己的表格。

cron 表格現在位於 /var/cron/tabs/etc/crontab 做為整個系統的 cron 表格。在時間表格之後、指令之前,輸入要直接執行指令的使用者名稱。在 範例 10.1, "/etc/crontab 中的項目" 中,則是輸入 root。位於 /etc/cron.d 的套件專用表格有相同的格式。請參閱 cron 線上文件 (man cron)。

範例 10.1. /etc/crontab 中的項目

1-59/5 * * * *   root   test -x /usr/sbin/atrun && /usr/sbin/atrun

您不能呼叫 crontab -e 指令來編輯 /etc/crontab。這個檔案必須直接載入編輯器中進行修改,然後儲存。

有些套件會將外圍程式程序檔安裝至 /etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly 等目錄中,其執行由 /usr/lib/cron/run-crons 控制。/usr/lib/cron/run-crons 每隔 15 分鐘會從主表格 (/etc/crontab) 執行一次。這會保證被忽略的程序可以在適當的時間執行。

如果要按照自訂時間,執行 hourlydaily 或其他定期維護程序檔,請定期使用 /etc/crontab 項目移除時間戳記檔案 (請參閱 範例 10.2, "/etc/crontab:移除時間戳記檔案",它可以在整點前移除 hourly、在每天的 2:14 a.m. 移除 daily 等)。

範例 10.2. /etc/crontab:移除時間戳記檔案

59 *  * * *     root  rm -f /var/spool/cron/lastrun/cron.hourly
14 2  * * *     root  rm -f /var/spool/cron/lastrun/cron.daily
29 2  * * 6     root  rm -f /var/spool/cron/lastrun/cron.weekly
44 2  1 * *     root  rm -f /var/spool/cron/lastrun/cron.monthly

每日的系統維護工作因為明確的理由,已經配送到不同的程序檔。它們包含在 aaa_base 套件中。例如,/etc/cron.daily 中有 suse.de-backup-rpmdbsuse.de-clean-tmpsuse.de-cron-local 等元件。

10.1.3. 記錄檔:logrotate 套件

某些系統服務 (daemon) 以及核心本身,會定期將系統狀態與特定事件記錄到記錄檔中。這樣管理員可以定期在某個時間點檢查系統的狀態、找出錯誤或有問題的功能,並且用精確的方式來排除它們。這些記錄檔通常以 FHS 所指定的方式儲存於 /var/log,而且會日益增大。logrotate 套件有助於控制這些檔案增大的方式。

使用 /etc/logrotate.conf 檔案 來設定 logrotate。尤其 include 規格主要是設定其他要讀取的檔案。SUSE Linux 能確保產生記錄檔的程式,會將個別的組態檔安裝在 /etc/logrotate.d 中。例如,套件 apache2 (/etc/logrotate.d/apache2) 和 syslogd (/etc/logrotate.d/syslog) 中的這類程式。

範例 10.3. /etc/logrotate.conf 的範例


# see "man logrotate" for details 
# rotate log files weekly 
weekly

# 保留四週的記錄備份 
rotate 4

# 在週期記錄檔案之後,建立新的 (空的) 記錄檔 
create

# 如果您想要壓縮記錄檔的話,請不要加上註解符號 
#compress

# RPM 套件會將記錄檔的週期資訊放到此目錄中 
include /etc/logrotate.d

# 沒有套件擁有 lastlog 或 wtmp - 在此我們將輪流使用 
#/var/log/wtmp { 
#    monthly 
#    create 0664 root utmp 
#    rotate 1 
#}

# 系統專用的記錄檔也可以在此處設定。 

logrotate 是透過 cron 來控制,並且每日是經由 /etc/cron.daily/logrotate 來呼叫。

[Important]重要

create 選項會讀取 /etc/permissions* 中由管理員所做的所有設定。請確定個人的修改不會造成衝突。

10.1.4. locate 指令

可以快速尋找檔案的 locate 指令,並不包含在安裝軟體的標準範圍中。若有需要,請安裝套件 find-locate。updatedb 程序會在每晚自行啟動,或在系統啟動約 15 分鐘後啟動。

10.1.5. ulimit 指令

利用 ulimit (使用者限制) 指令,您可以限制系統資源的使用,並顯示這些限制。ulimit 對於限制應用程式可用的記憶體特別有用。利用它,可以避免應用程式使用過多的記憶體空間,使用過多的記憶體空間可能會導致系統暫停。

ulimit 可以搭配多種選項來使用。若要限制記憶體的使用,請利用 表格 10.1, "ulimit:設定使用者的資源" 中所列的選項。

表格 10.1. ulimit:設定使用者的資源

-m

實體記憶體的最大大小

-v

虛擬記憶體的最大大小

-s

堆疊的最大大小

-c

核心檔案的最大大小

-a

限制集的顯示

您可以在 /etc/profile 中設定全系統的項目。在此可建立核心檔,以供程式設計人員除錯之用。一般使用者無法增加系統管理員在 /etc/profile 中所指定的值,但可以在 ~/.bashrc 中建立特殊的設定項目。

範例 10.4. ulimit:在 ~/.bashrc 中的設定

 
# Limits of physical memory:
ulimit -m 98304
 
# 限制虛擬記憶體:
ulimit -v 98304 
  

記憶體的單位必須為 KB。如需詳細資訊,請參閱 man bash

[Important]重要

並非所有的外圍程序都支援 ulimit 指令。在您根據這些限制的內含設定時,PAM (例如 pam_limits) 會提供全面的調整設定。

10.1.6. free 指令

如果您的目標是要找出目前使用了多少 RAM 的話,則是稍微誤解 free 指令的用途。您可以在 /proc/meminfo 找到此資訊。近來,使用 Linux 之類新式作業系統的使用者,真的不太需要擔心記憶體的問題。可用的 RAM的概念要回溯到聯合記憶體管理的年代之前。記憶體要物盡其用的口號非常適用於 Linux。所以,Linux 一直致力於平衡快取,而不允許有剩餘或未使用的記憶體。

基本上,核心不會有任何應用程式或使用者資料的的直接知識。相反地,它會在頁面快取中管理應用程式與使用者資料。如果記憶體不足,部份的記憶體資料會寫入交換分割區或檔案中,這部份一開始就能用 mmap 指令的協助來讀取 (請參閱 man mmap)。

核心也可以有其它的快取,例如 slab 快取,網路存取的快取資料會儲存於此處。這可以解釋 /proc/meminfo 中計數器之間的不同。它們大部分但非全部都可以透過 /proc/slabinfo 來存取。

10.1.7. /etc/resolv.conf 檔案

領域名稱解析會透過 /etc/resolv.conf 檔案來處理。請參照 章 20, 領域名稱系統

只有 /sbin/modify_resolvconf 程序檔可以更新此檔案,其它的程式沒有權限可以直接修改 /etc/resolv.conf。能保證系統的網路組態與相關檔案都保持在一致狀態的唯一方法,就是強制執行此規則。

10.1.8. 線上文件和資訊頁面

某些 GNU 應用程式 (例如 tar) 不再支援 man 頁面。針對這些指令,請使用 --help 選項來取得 info 頁面的快速概觀,這些都會提供更深入詳盡的說明。info 是 GNU 的超文字系統。您可以輸入 info info 來讀取此系統的介紹。您可以輸入 emacs -f info 或直接在主控台中使用 info,以便使用 Emacs 檢視資訊頁面。您也可以使用 tkinfo、xinfo 或 SUSE 說明系統檢視 info 頁面。

10.1.9. GNU Emacs 的設定

GNU Emacs 是個複雜的工作環境。以下幾個小節包含在 GNU Emacs 啟動時組態檔案的處理情形。更多相關資訊可在 http://www.gnu.org/software/emacs/ 取得。

啟動時,Emacs 會讀取多個檔案,包含使用者、系統管理員與供應商的設定,以及取得自訂或預設組態的設定。起始化檔案 ~/.emacs 會從 /etc/skel 安裝至個別使用者的主目錄。.emacs 接著會讀取 /etc/skel/.gnu-emacs 檔案。 如果要自訂程式,請將 .gnu-emacs 複製到主目錄 (利用 cp /etc/skel/.gnu-emacs ~/.gnu-emacs 指令),並依照您的需求來設定。

.gnu-emacs 定義 ~/.gnu-emacs-custom 檔案為 自訂檔案。如果使用者是使用 Emacs 中的自訂選項來進行設定,這些設定會儲存至 ~/.gnu-emacs-custom 中。

透過 SUSE Linux,emacs 套件可將 site-start.el 檔案安裝至 /usr/share/emacs/site-lisp 目錄中。site-start.el 檔案會在啟始化檔案 ~/.emacs 前載入。此外,site-start.el 會確保那些以 Emacs 附加套件來散佈的特定組態檔案皆能自動載入,例如 psgml。此類型的組態檔案也位於 /usr/share/emacs/site-lisp 中,並且會以 suse-start- 為開頭。本機系統管理員可在 default.el 中指定整個系統的設定。

有關這些檔案的詳細資訊可在 Init File 下的 Emacs 資訊檔案中取得:info:/emacs/InitFile。關於如何關閉這些檔案的載入 (若有需要) 的資訊,也可在此取得。

Emacs 的元件分成數個套件:

  • emacs 基本套件。

  • emacs-x11 (通常會安裝):使用 X11 支援的程式。

  • emacs-nox不使用 X11 支援的程式。

  • emacs-info:線上的 info 格式文件。

  • emacs-el:以 Emacs Lisp 編寫的未編譯文件庫檔案。執行期間用不到這類檔案。

  • 需要時可加以安裝的多個附加套件:emacs-auctex (用於 LaTeX)、psgml (用於 SGML 與 XML)、gnuserv (用於用戶端和伺服器操作) 以及其他等等。