Linux下如何拆分大的日志文件?
前言
沒設(shè)置好日志大小最大值,導(dǎo)致日志文件過大,普通編輯器根本沒法打開或者特別卡,怎么辦?拆分唄。
如何拆分
split命令上場。
按照行數(shù)拆分
假設(shè)文件test.txt有n多行,每2行拆分為一個文件,使用-l參數(shù)即可:
- $ split -l 2 test.txt
- $ ls -al
- -rw-r--r-- 1 root root 32 Aug 31 16:55 test.txt
- -rw-r--r-- 1 root root 20 Aug 31 16:55 xaa
- -rw-r--r-- 1 root root 12 Aug 31 16:55 xab
仔細一看,拆分后的文件名難以描述啊。
能不能好好命名一下呢?
規(guī)范命名
使用-d參數(shù)可以用數(shù)字作為新的文件后綴:
- $ split -l 2 test.txt -d
- $ ls
- test.txt x00 x01 x02
還可以用-a指定后綴數(shù)字的長度(默認是2):
- $ split -l 2 test.txt -d -a 4
- $ ls
- test.txt x0000 x0001 x0002
不過開頭的x實在看不順序,我們還可以指定前綴,比如指定前綴為test:
- $ split -l 2 test.txt -d -a 4 test
- $ ls
- test0000 test0001 test0002 test.txt
而且你還可以從指定數(shù)字下標開始,使用--numeric-suffixes,例如從0004開始:
- $ split --numeric-suffixes=4 test.txt -a 4 -l 2
- test.txt x0004 x0005
按照大小拆分
使用-b參數(shù)來按照大小來拆分,單位為字節(jié):
- $ split -b 10 test.txt
當然還可以使用k(千字節(jié)),m(兆)。即:
- $ split -b 10k test.txt
分割成指定數(shù)量文件
使用-n參數(shù)即可,比如無論大小,行數(shù),拆分為3個文件:
- $ split -n 4 test.txt
- $ test.txt xaa xab xac xad
其他方法
當然了,打的日志文件可以不用那種創(chuàng)建臨時文件打開的方式(如vim打開一個文件會創(chuàng)建一個臨時文件),而可以使用類似more,tail等命令查看部分內(nèi)容。