使用指令分割大檔案
按檔案大小分割
[root@localhost]$ split -C 100M large_file.txt stxt
按行數分割
[root@localhost]$ split -l 1000 large_file.txt stxt
二進位檔案分割(以-b引數來指定分割後的檔案大小)
[root@localhost]$ split -b 100M data.bak sdata
固定時間切割LOG檔案
logrotate官方說明: https://linux.die.net/man/5/logrotate.conf
logrotate旨在簡化對生成大量日誌文件的系統的管理。它允許自動旋轉,壓縮,刪除和郵寄日誌文件。每個日誌文件可以每天,每週,每月或當文件太大時進行處理。
通常,logrotate作為日常cron作業運行。除非該日誌的標準基於日誌的大小並且每天要多次運行logrotate,或者除非使用了-f或–force選項,否則它不會在一天內多次修改日誌。
命令行上可以提供任意數量的配置文件。較新的配置文件可能會覆蓋較早的文件中提供的選項,因此列出logrotate配置文件的順序 很重要。通常,應使用包含所需其他任何配置文件的單個配置文件。有關如何使用include指令完成此操作的更多信息,請參見下文。如果在命令行上給出了目錄,則該目錄中的每個文件都將用作配置文件。
如果未提供命令行參數,logrotate將打印版本和版權信息以及簡短的使用摘要。如果輪換日誌時發生任何錯誤,logrotate將以非零狀態退出。
logrotate的Options
-d,--debug
: 打開調試模式並暗含-v。在調試模式下,將不會對日誌或logrotate
狀態文件進行任何更改。-f,--force
: 告訴logrotate
強制rotate,即使它認為沒有必要也是如此。有時,在將新條目添加到logrotate
配置文件後,或者如果手動刪除了舊日誌文件,這將很有用 ,因為將創建新文件,並且日誌記錄將繼續正確進行。-m, --mail <command>
: 告訴logrotate郵寄日誌時使用哪個命令。此命令應接受兩個參數:1)郵件的主題,以及2)收件人。然後,該命令必須閱讀標準輸入上的消息並將其郵寄給收件人。預設的mail命令是/bin/mail -s
。-s, --state
: 告訴logrotate使用備用狀態文件。如果logrotate以不同的用戶身份運行各種日誌文件集,這將很有用。預設狀態文件是/var/lib/logrotate.status
。--usage
: 打印簡短的使用信息。--?, --help
: -打印幫助消息。-v, --verbose
: 打開詳細模式。
logrotate.conf範例
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # sample logrotate configuration file compress / var /log/messages { rotate 5 weekly postrotate /usr/bin/killall -HUP syslogd endscript } "/var/log/httpd/access.log" / var /log/httpd/error.log { rotate 5 mail www@my.org size 100k sharedscripts postrotate /usr/bin/killall -HUP httpd endscript } / var /log/news/* { monthly rotate 2 olddir / var /log/news/old missingok postrotate kill -HUP 'cat /var/run/inn.pid' endscript nocompress } |
常用參數
- copytruncate: 會先複製一個log檔然後再將原本的log檔案清空,可用在無法通知使用此Log檔案停止寫進log的狀態
- compress: 是否要壓縮分割後的log
- daily, monthly, weekly, yearly: 多久分割一次
- missingok: 沒有此檔案也不跳錯誤
相關檔案
/etc/logrotate.conf
: Configuration options./var/lib/logrotate.status
: Default state file./etc/cron.daily/logrotate
: 每天執行(如要改成每小時執行可以將logrotate
移到cron.hourly
)
logrotate 卻是在規定的時間到了之後才來進行登錄檔的輪替, 所以這個 logrotate 程序當然就是掛在 cron 底下進行的
立刻執行logrotate
logrotate -v /etc/logrotate.conf