我刚刚在 CentOS Linux 服务器上托管我的 VPS。
以下日志文件增长非常快,我希望它们每 24 小时删除一次:
/home/httpd/tanguay.info/stats/tanguay.info-custom_log
/home/httpd/tanguay.info/stats/tanguay.info-error_log
/home/admin/__processed_stats/*
我该如何创建一个 cron 作业,在每天午夜删除所有这些文件?
答案1
不建议立即清除日志文件,因为稍后可能需要它们进行调试、统计或跟踪入侵。虽然在单个 VPS 场景中将日志传送到异地可能有点过分,但有比简单删除这些更好的方法。
我建议你研究一下 logrotate 或 cronolog(可能在 CentOS 上以软件包形式提供)。使用这些软件包,你可以设置如何(通常)每天处理日志文件的规则,例如:保留一周的日志,但压缩除今天的日志之外的所有日志。
答案2
您还可以减少发送到日志的信息。您可以将其设置为仅记录错误,而不是信息、警告和错误。只是一个建议。如果您想删除日志,请确保它们仍未使用。像其他人建议的那样轮换您的日志文件。它们通常会在一段时间后被压缩和删除。
答案3
Logrotate 是最好的方法。无论如何,您都需要在之后向 httpd 发送 HUP 信号,否则日志的文件句柄将保持打开状态,并且文件系统将填满,但不会反映在文件大小中。
答案4
要每天凌晨 1 点清空文件,您可以使用:
0 1 * * * :> /home/httpd/tanguay.info/stats/tanguay.info-custom_log
0 1 * * * :> /home/httpd/tanguay.info/stats/tanguay.info-error_log
0 1 * * * for i in `ls /home/admin/__processed_stats/`; do :> $i; done
但好的方法是使用日志旋转