Edward Tanguay Asked: 2009-07-21 15:02:38 +0800 CST2009-07-21 15:02:38 +0800 CST 2009-07-21 15:02:38 +0800 CST 如何创建一个 cron 作业以每 24 小时删除两个文件? 772 我是在 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 作业的步骤是什么? linux cron vps 4 个回答 Voted Best Answer Jan Jungnickel 2009-07-21T15:06:34+08:002009-07-21T15:06:34+08:00 不建议立即清除日志文件,因为稍后可能需要它们进行调试、统计或跟踪入侵。虽然在单个 VPS 场景中将日志传送到异地可能有点矫枉过正,但除了简单地删除它们之外,还有更好的方法。 我建议您查看 logrotate 或 cronolog(可能在 CentOS 上作为软件包提供)。使用这些软件包,您可以设置如何(通常)每天处理日志文件的规则,例如:保留一周的日志,但压缩除今天之外的所有日志。 xeon 2009-07-21T15:10:56+08:002009-07-21T15:10:56+08:00 您还可以减少发送到日志的信息。您可以将其设置为仅记录错误而不是信息、警告和错误。只是一个建议。如果要删除日志,请确保它们仍未被使用。像其他人建议的那样轮换您的日志文件。它们通常会在一段时间后被压缩和删除。 Alex 2009-07-21T16:22:42+08:002009-07-21T16:22:42+08:00 Logrotate 是最好的方法。在任何情况下,您都需要在之后向 httpd 发送 HUP 信号,否则您的日志文件句柄将保持打开状态,您的文件系统将被填满,但不会反映在文件的大小中。 radius 2009-07-21T15:08:55+08:002009-07-21T15:08:55+08:00 要在每天凌晨 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 但好的方法是使用logrotate 您可能还想看看:日志轮换工具,它只保留指定数量的日志并丢弃其他所有内容和Apache 访问日志轮换
不建议立即清除日志文件,因为稍后可能需要它们进行调试、统计或跟踪入侵。虽然在单个 VPS 场景中将日志传送到异地可能有点矫枉过正,但除了简单地删除它们之外,还有更好的方法。
我建议您查看 logrotate 或 cronolog(可能在 CentOS 上作为软件包提供)。使用这些软件包,您可以设置如何(通常)每天处理日志文件的规则,例如:保留一周的日志,但压缩除今天之外的所有日志。
您还可以减少发送到日志的信息。您可以将其设置为仅记录错误而不是信息、警告和错误。只是一个建议。如果要删除日志,请确保它们仍未被使用。像其他人建议的那样轮换您的日志文件。它们通常会在一段时间后被压缩和删除。
Logrotate 是最好的方法。在任何情况下,您都需要在之后向 httpd 发送 HUP 信号,否则您的日志文件句柄将保持打开状态,您的文件系统将被填满,但不会反映在文件的大小中。
要在每天凌晨 1 点清空文件,您可以使用:
但好的方法是使用logrotate
您可能还想看看:日志轮换工具,它只保留指定数量的日志并丢弃其他所有内容和Apache 访问日志轮换