如何创建一个 cron 作业来每 24 小时删除两个文件?

如何创建一个 cron 作业来每 24 小时删除两个文件?

我刚刚在 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

但好的方法是使用日志旋转

您可能还想看看:日志轮换工具,只保留指定数量的日志并丢弃其他所有内容Apache 访问日志轮换

相关内容