1、高效的删除日志文件的方法:
错误的删除log文件:rm -f logfile
原因:应用已经打开文件句柄,直接删除会造成:
- 应用无法正确释放日志文件和写入
- 显示磁盘空间未释放
正确的方法:cat /dev/null > logfile
把一下代码保存为.sh后缀脚本来运行即可清除Linux系统日志#!/bin/sh cat /dev/null > /var/log/syslogcat /dev/null > /var/adm/sylogcat /dev/null > /var/log/wtmpcat /dev/null > /var/log/maillogcat /dev/null > /var/log/messagescat /dev/null > /var/log/openwebmail.logcat /dev/null > /var/log/maillogcat /dev/null > /var/log/securecat /dev/null > /var/log/httpd/error_logcat /dev/null > /var/log/httpd/ssl_error_logcat /dev/null > /var/log/httpd/ssl_request_logcat /dev/null > /var/log/httpd/ssl_access_logcat /dev/null > /usr/local/nginx/logs/access.logcat /dev/null > /usr/local/nginx/logs/error.log
其它几种类似的方法:$ : > filename #其中的 : 是一个占位符, 不产生任何输出.$ > filename$ echo “” > filename$ echo /dev/null > filename$ echo > filename
2、高效的删除琐碎文件的方法:
利用rsync --delete将目标文件夹以一个空的文件夹来替换。rsync功能很强大,与--exclude结合起来使用,可以选择性的删除文件。
测试:
1、创建测试的1万文件mkdir test_dir && cd test_dir && touch file{1..10000}.txt
2、使用rsync命令删除文件➜ time rsync -a --delete ~/test_dir/* /tmp/rsync -a --delete ~/test_dir/* /tmp/ 0.05s user 0.03s system 66% cpu 0.120 total
3、使用find命令删除文件➜ time find ~/test_dir -type f -deletefind ~/test_dir -type f -delete 0.01s user 0.17s system 88% cpu 0.203 total
4、使用find与xargs删除文件➜ time find ~/test_dir -type f | xargs -L 100 rmfind ~/test_dir -type f 0.01s user 0.01s system 7% cpu 0.273 totalxargs -L 100 rm 0.02s user 0.05s system 21% cpu 0.322 total
5、使用find与xargs指定一次处理的数量➜ time find ~/test_dir -type f | xargs -L 100 -P 100 rmfind ~/test_dir -type f 0.01s user 0.01s system 9% cpu 0.161 totalxargs -L 100 -P 100 rm 0.03s user 0.12s system 61% cpu 0.249 total
6、使用传统rm命令删除➜ time rm -rf ~/test_dir/*zsh: sure you want to delete all the files in /root/test_dir [yn]? yrm -rf ~/test_dir/* 0.01s user 0.16s system 95% cpu 0.171 total