
- Unix/Linux 初學者指南
- Unix/Linux - 首頁
- Unix/Linux - 什麼是Linux?
- Unix/Linux - 入門
- Unix/Linux - 檔案管理
- Unix/Linux - 目錄
- Unix/Linux - 檔案許可權
- Unix/Linux - 環境
- Unix/Linux - 基本實用程式
- Unix/Linux - 管道與過濾器
- Unix/Linux - 程序
- Unix/Linux - 通訊
- Unix/Linux - vi 編輯器
- Unix/Linux Shell 程式設計
- Unix/Linux - Shell 指令碼
- Unix/Linux - 什麼是Shell?
- Unix/Linux - 使用變數
- Unix/Linux - 特殊變數
- Unix/Linux - 使用陣列
- Unix/Linux - 基本運算子
- Unix/Linux - 決策
- Unix/Linux - Shell 迴圈
- Unix/Linux - 迴圈控制
- Unix/Linux - Shell 替換
- Unix/Linux - 引號機制
- Unix/Linux - I/O 重定向
- Unix/Linux - Shell 函式
- Unix/Linux - 手冊頁幫助
- 高階 Unix/Linux
- Unix/Linux - 標準 I/O 流
- Unix/Linux - 檔案連結
- Unix/Linux - 正則表示式
- Unix/Linux - 檔案系統基礎
- Unix/Linux - 使用者管理
- Unix/Linux - 系統性能
- Unix/Linux - 系統日誌
- Unix/Linux - 訊號和陷阱
Unix/Linux - 系統日誌
在本章中,我們將詳細討論 Unix 中的系統日誌。
Unix 系統擁有一個非常靈活和強大的日誌系統,它允許您記錄幾乎任何可以想象的事情,然後操縱日誌以檢索所需的資訊。
許多版本的 Unix 提供了一個稱為 **syslog** 的通用日誌記錄功能。需要記錄資訊的各個程式將資訊傳送到 syslog。
Unix *syslog* 是一個可由主機配置的統一系統日誌記錄功能。系統使用一個集中的系統日誌記錄程序,該程序執行程式 ** /etc/syslogd ** 或 ** /etc/syslog **。
系統記錄器的操作非常簡單。程式將其日誌條目傳送到 *syslogd*,後者會查閱配置檔案 ** /etc/syslogd.conf ** 或 ** /etc/syslog **,並在找到匹配項時將日誌訊息寫入所需的日誌檔案。
有四個基本的 syslog 術語您應該瞭解:
序號 | 術語及描述 |
---|---|
1 |
設施 用於描述提交日誌訊息的應用程式或程序的識別符號。例如,郵件、核心和 ftp。 |
2 |
優先順序 訊息重要性的指示符。syslog 中定義了級別作為指南,從除錯資訊到關鍵事件。 |
3 |
選擇器 一個或多個設施和級別的組合。當傳入事件與選擇器匹配時,將執行操作。 |
4 |
操作 對匹配選擇器的傳入訊息執行的操作 - 操作可以將訊息寫入日誌檔案,將訊息回顯到控制檯或其他裝置,將訊息寫入登入的使用者,或將訊息傳送到另一個 syslog 伺服器。 |
Syslog 設施
現在我們將瞭解 syslog 設施。以下是選擇器可用的設施。並非所有版本的 Unix 都提供所有設施。
設施 | 描述 |
---|---|
1 |
auth 與請求名稱和密碼相關的活動(getty、su、login) |
2 |
authpriv 與 auth 相同,但記錄到只有選定使用者才能讀取的檔案中 |
3 |
console 用於捕獲通常定向到系統控制檯的訊息 |
4 |
cron 來自 cron 系統排程程式的訊息 |
5 |
daemon 系統守護程序通用 |
6 |
ftp 與 ftp 守護程序相關的訊息 |
7 |
kern 核心訊息 |
8 |
local0.local7 每個站點定義的本地設施 |
9 |
lpr 來自行列印系統的訊息 |
10 |
與郵件系統相關的訊息 |
11 |
mark 用於在日誌檔案中生成時間戳的偽事件 |
12 |
news 與網路新聞協議 (nntp) 相關的訊息 |
13 |
ntp 與網路時間協議相關的訊息 |
14 |
user 常規使用者程序 |
15 |
uucp UUCP 子系統 |
Syslog 優先順序
syslog 優先順序在以下表格中進行了總結:
序號 | 優先順序及描述 |
---|---|
1 |
emerg 緊急情況,例如即將發生的系統崩潰,通常廣播給所有使用者 |
2 |
alert 應立即糾正的情況,例如損壞的系統資料庫 |
3 |
crit 嚴重情況,例如硬體錯誤 |
4 |
err 普通錯誤 |
5 |
Warning Warning |
6 |
notice 不是錯誤但可能應以特殊方式處理的情況 |
7 |
info 資訊訊息 |
8 |
debug 除錯程式時使用的訊息 |
9 |
none 用於指定不記錄訊息的偽級別 |
設施和級別的組合使您能夠明辨記錄的內容以及資訊去向。
當每個程式都盡職地將其訊息傳送到系統記錄器時,記錄器會根據選擇器中定義的級別決定跟蹤哪些內容以及丟棄哪些內容。
當您指定級別時,系統將跟蹤該級別及更高級別的一切。
/etc/syslog.conf 檔案
** /etc/syslog.conf ** 檔案控制日誌訊息的儲存位置。典型的 ** syslog.conf ** 檔案可能如下所示:
*.err;kern.debug;auth.notice /dev/console daemon,auth.notice /var/log/messages lpr.info /var/log/lpr.log mail.* /var/log/mail.log ftp.* /var/log/ftp.log auth.* @prep.ai.mit.edu auth.* root,amrood netinfo.err /var/log/netinfo.log install.* /var/log/install.log *.emerg * *.alert |program_name mark.* /dev/console
檔案的每一行包含兩個部分:
**訊息選擇器**,指定要記錄哪種訊息。例如,核心的所有錯誤訊息或所有除錯訊息。
**操作欄位**,說明應如何處理該訊息。例如,將其放入檔案或將訊息傳送到使用者的終端。
以下是上述配置的要點:
訊息選擇器包含兩部分:**設施**和**優先順序**。例如,*kern.debug* 選擇核心(設施)生成的所有除錯訊息(優先順序)。
訊息選擇器 *kern.debug* 選擇所有優先順序高於除錯的優先順序。
設施或優先順序位置的星號表示“全部”。例如,** *.debug ** 表示所有除錯訊息,而 ** kern.* ** 表示核心生成的所有訊息。
您還可以使用逗號指定多個設施。可以使用分號將兩個或多個選擇器組合在一起。
日誌記錄操作
操作欄位指定以下五種操作之一:
將日誌訊息記錄到檔案或裝置。例如,** /var/log/lpr.log ** 或 ** /dev/console **。
將訊息傳送給使用者。您可以透過逗號分隔多個使用者名稱;例如,root、amrood。
將訊息傳送給所有使用者。在這種情況下,操作欄位由星號組成;例如,*。
將訊息透過管道傳遞到程式。在這種情況下,程式在 Unix 管道符號(|)後指定。
將訊息傳送到另一臺主機上的 syslog。在這種情況下,操作欄位由主機名組成,前面帶有 at 符號;例如,@tutorialspoint.com。
logger 命令
Unix 提供了 **logger** 命令,這是一個處理系統日誌記錄的極其有用的命令。**logger** 命令將日誌訊息傳送到 syslogd 守護程序,從而引發系統日誌記錄。
這意味著我們可以隨時從命令列檢查 **syslogd** 守護程序及其配置。logger 命令提供了一種方法,可以從命令列向系統日誌檔案新增單行條目。
命令格式如下:
logger [-i] [-f file] [-p priority] [-t tag] [message]...
以下是引數的詳細資訊:
序號 | 選項及描述 |
---|---|
1 |
-f filename 使用檔案 filename 的內容作為要記錄的訊息。 |
2 |
-i 為每一行記錄 logger 程序的程序 ID。 |
3 |
-p priority 以指定的優先順序(指定的選取器條目)輸入訊息;可以以數字或設施.優先順序對的形式指定訊息優先順序。預設優先順序為 user.notice。 |
4 |
-t tag 使用指定的標籤標記新增到日誌中的每一行。 |
5 |
message 其內容按指定順序連線在一起的字串引數,並以空格分隔。 |
您可以使用 手冊頁幫助 檢查此命令的完整語法。
日誌輪換
日誌檔案有快速增長的趨勢,並消耗大量磁碟空間。為了啟用日誌輪換,大多數發行版使用 ** *newsyslog* ** 或 ** *logrotate* ** 等工具。
應使用 **cron 守護程序** 在頻繁的時間間隔內呼叫這些工具。有關更多詳細資訊,請檢視 *newsyslog* 或 *logrotate* 的手冊頁。
重要的日誌位置
所有系統應用程式都在 ** * /var/log * ** 及其子目錄中建立其日誌檔案。以下是一些重要的應用程式及其對應的日誌目錄:
應用程式 | 目錄 |
---|---|
httpd | /var/log/httpd |
samba | /var/log/samba |
cron | /var/log/ |
/var/log/ | |
mysql | /var/log/ |