我有两个包含一堆站点的目录(〜/ www /和〜/ client-sites /),每个站点都有access.log和error.log文件。
find所有这些文件并清空其内容最简单的方法是什么? 他们快速成长,所以我想每月清理一次原木。
安装logrotate(Windows见http://sourceforge.net/projects/logrotatewin ):
# CentOS/RHEL yum install logrotate # Debian/Ubuntu apt-get install logrotate
创build/编辑/etc/logrotate.d/httpd ,例子取自CentOS,其他Distros需要调整。
/var/log/httpd/*_log { weekly missingok rotate 5 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /etc/init.d/httpd reload > /dev/null endscript }
几乎可以做你所要求的
find ~/www/ and ~/client-sites/ \( -name 'access.log' -o -name 'error.log' \) \ -exec sh -c '> "$1"' -- {} \;
这将截断任何子目录中的任何文件名匹配的每个文件为0字节。
Apache Web服务器附带一个名为rotatelogs的实用程序,可用于控制日志文件。
是的,几乎没有任何发行版使用它。
不,他们不知道更好 – 他们只是无知。