我有两个目录(~/www/ 和 ~/client-sites/),其中包含许多站点,每个站点都有 access.log 和 error.log 文件。
找到所有这些文件并清空其内容的最简单方法是什么?它们增长很快,所以我希望每月左右清除一次日志。
答案1
安装 logrotate(Windows 请参阅http://sourceforge.net/projects/logrotatewin):
# CentOS/RHEL
yum install logrotate
# Debian/Ubuntu
apt-get install logrotate
创建/编辑/etc/logrotate.d/httpd
,示例取自 CentOS,需要针对其他发行版进行调整。
/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
}
答案2
确实按照你的要求去做
find ~/www/ and ~/client-sites/ \( -name 'access.log' -o -name 'error.log' \) \
-exec sh -c '> "$1"' -- {} \;
这会将任何子目录中与文件名匹配的每个文件截断为 0 字节。
答案3
apache 网络服务器带有一个名为的实用程序rotatelogs
,可用于控制日志文件。
是的,几乎没有发行版使用它。
不,他们不知道——他们只是无知。