这里推荐几种Unix/Linux中常用的清理磁盘空间方法:
第一种方法:
find ./ -name "*.log*" -exec echo ">" {} \;|sh
这条命令的意思就是搜索当前目录下的以".log”结尾的文件,并将其清空,这种适合于日志长期存在并且不便直接删除的时候使用。使用“>”进行清空操作的时候
后面要加上"|sh”。
第二种方法:
find ./ -name "*.log" -mtime +1 -exec compress {} \;
find ./ -name "*.log" -mtime +1 -exec rm {} \;
这条命令的意思就是搜索当前目录下的以".log"结尾的文件,-mtime +1的意思就是文件的最后修改时间超过1天的,对满足这两种条件的文件进行压缩或者删除操
作。
第三种方法:
ls TRACE_*.log|perl -lne '@a=stat($_);if( (time()-$a[9])/3600 >6 ) {print "rm $_";}'|sh
ls ULOG.*[0-9]|perl -lne '@a=stat($_);if( (time()-$a[9])/3600 >24 ) {print "compress $_";}'|sh
ls大家很熟悉,就是列出当前文件夹下的文件,后面的perl -lne就是perl中很有用的命令行参数,stat是其中的一个函数,能够获得文件的各种状态,"$_"就是由前面的ls函数列出的文件名的通配符,time()是系统函数,获取当前的系统时间,"$a[9]"就是由前面的stat函数得到的文件状态a中第九个参数,也就是文件的时间,“if( (time()-$a[9])/3600 >6 )”的意思显而易见,就是指系统当前时间减去文件时间如果大于6个小时的话,就执行后面的操作。
第二条命令类似。
一般来说,可以找出系统中的各个程序的日志目录,并商定各个程序日志需要保留的时间,选用合适的命令,写成清理脚本,然后配置到系统的crontab中定期执行,这样就实现了磁盘空间的自动维护,这样就不会出现因为日志量过大而将系统磁盘空间占满而使程序不能正常执行的问题。