前言
此檔功用在於將 syslog.conf 所定義的 Log 隨著時間不斷增大進行日誌轉儲的動作,每個小時會去定期檢查 /var/log/ 下的檔案 (由 /etc/crontab 可知),並將符合設定的 Log 壓縮備份及刪除老舊的檔案。以下為 newsyslog.conf 內容及欄位說明:
/var/log/maillog - 640 7 * @T00 J - -
- logfile_name: 放置 Log 檔的絕對路徑及 Log 名稱 (一般都放在 /var/log/ 這個目錄下如 maillog、httpd-access.log...etc)。
- [owner:group]: Log 檔案的擁有者及群組,預設為 root:wheel。
- mode: 產生 Log 檔的檔案權限 (一般為 640 或 600...etc)。
- count: 產生的備份檔數目,例如數字為 7 則會有 0 ~ 7 個備份 Log 檔案及一個正在使用的 Log 檔。
- 舉例以 maillog 來說若數字為 7 則會有 maillog.0.bz2 ~ maillog.7.bz2 及目前正在使用的 maillog 檔案。
- size: 當 Log 檔至此指定欄位大小,則執行備份動作 (單位為 KB)。
- 星號 (*) 表示不管檔案大小一律執行備份動作。
- when: 設定要備份 Log 的時間,有如下二種表達方式。
- 表達方式1: 使用 ISO8601 日期格式 (日期前面要加上 @ 符號,日期和時間則以 T 分開)。
- 標準表達格式為 (假設時間是 2004-04-27 10:05:45) 則可寫成 20040427T100545,但通常我們都是設定到日期及時間。
- @T00:表示每日 0 時執行。
- @01T05:表示每個月的 01 日 05 時執行。
- 表達方式2:使用 FreeBSD 專屬時間格式 M W D (月、週、天、小時) 前面要加上 $ 符號。
- $M5D6:表示每個月第 5 天的早上 6 點。
- $W0D4:表示每週第一天 (星期天) 的早上 4 點。
- $MLH22:每月最後一天的晚上10點執行 (L 表示在某月的最後一天)。
- 表達方式1: 使用 ISO8601 日期格式 (日期前面要加上 @ 符號,日期和時間則以 T 分開)。
- flags: 備份 Log 檔時壓縮格式。
- Z: 使用 gzip 壓縮。
- J: 使用 bzip2 壓縮。
- B: 使用二位元 (binary) 檔。
- [/pid_file]: pid 檔的絕對路徑,有設定則會送 sig_num 給指定的程式一般不需要設定。若要備份 Apache Log 時就需要用到,且備份完 Apache Log 需要重新啟動,因此此欄位就需要設定為 /var/run/httpd.pid 否則當 Apache Log 備份完後會因為找不到 Apache Process ID 而無法產生新的 http-access.log。
- [sig_num]: 送給該 Daemon 程式的 Signal Number (預設為 SIGHUP)。