如何在Linux中清空(截断)日志文件
时间:2020-02-23 14:30:31 来源:igfitidea点击:
在Sysadmin生命周期的某个时刻,我们可能需要清空日志文件以节省系统磁盘空间或者其他任何原因。在Linux系统中,有多种方法可以清空文件。
使用truncate命令清空日志文件
在Linux中清空日志文件的最安全方法是使用truncate命令。 Truncate命令用于将每个FILE的大小缩小或者扩展到指定的大小。
truncate -s 0 logfile
其中,-s用于设置或者调整文件大小(以SIZE字节为单位)。文件可以是相对于当前目录的,也可以是所提供文件的绝对路径。
要获取完整的截断命令选项,请使用选项-帮助。
Usage: truncate OPTION... FILE... Shrink or extend the size of each FILE to the specified size A FILE argument that does not exist is created. If a FILE is larger than the specified size, the extra data is lost. If a FILE is shorter, it is extended and the extended part (hole) reads as zero bytes. Mandatory arguments to long options are mandatory for short options too. -c, --no-create do not create any files -o, --io-blocks treat SIZE as number of IO blocks instead of bytes -r, --reference=RFILE base size on RFILE -s, --size=SIZE set or adjust the file size by SIZE bytes --help display this help and exit --version output version information and exit The SIZE argument is an integer and optional unit (example: 10K is 10*1024). Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000). SIZE Jan also be prefixed by one of the following modifying characters: '+' extend by, '-' reduce by, '<' at most, '>' at least, '/' round down to multiple of, '%' round up to multiple of. GNU coreutils online help: <https://www.gnu.org/software/coreutils Full documentation at: <https://www.gnu.org/software/coreutils/truncate> or available locally via: info '(coreutils) truncate invocation'
使用:>或者true>清空日志文件
我们也可以使用:>
清除文件内容。语法是
:> logfile
这相当于
true > logfile
见下面的例子
使用echo命令清空日志文件
如果我们不回显任何文件,它将清除内容以清空它。
echo "" > logfile
这和下面是一样的
echo > testfile
使用dd命令清空日志文件
使用dd命令的语法是
dd if=/dev/null of=logfile
或者
dd if=/dev/null > logfile
请参阅以下示例
$ls -l testfile -rw-r--r-- 1 jmutai jmutai 1338 Oct 2 23:07 testfile $[theitroad@localhost tmp]$ls -l testfile -rw-r--r-- 1 jmutai jmutai 1338 Oct 2 23:07 testfile [theitroad@localhost tmp]$dd if=/dev/null of=testfile 0+0 records in 0+0 records out 0 bytes copied, 0.000322652 s, 0.0 kB/s [theitroad@localhost tmp]$ls -l testfile -rw-r--r-- 1 jmutai jmutai 0 Oct 2 23:33 testfile
对于多个文件,bash中的一个简单循环就足够了。
for file in logfile1 logfile2 logfile2 ... ; do truncate -s 0 $file or dd if=/dev/null of=$file or :>$file done
使用任何一种方法可以清空大型日志文件。