使用 cron 作业删除日志文件

新手上路,请多包涵

你好。我想从文件夹中删除过去 7 天的所有日志文件,但保留所有其他文件。我可以使用下面的命令吗?您如何指定它只删除扩展名为 .log 的文件?

  find  /path/to/file -mtime +7 -exec rm -f {} \;

我是否需要将此命令写入某个文件,或者我可以将其写入命令提示符并让它每天自动运行?

我不知道如何在 linux 中运行 cron 作业。

原文由 Harry 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 603
2 个回答

您可以通过运行 crontab -e 来编辑您的 个人 crontab。这将保存到 /var/spool/cron/<username> 。该文件将是所有者的用户名,因此 root 将是 /var/spool/cron/root。文件中的所有内容都作为文件的所有者运行。

crontab 的语法如下:

 SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

当您通过 crontab -e 编辑自己的 个人 crontab 时,您会省略用户名字段,因为用户是由文件名推断的(参见第一段)。

话虽如此,您的条目应如下所示:

 0 5 * * *  find  /path/to/*.log -mtime +7 -delete

这将在系统时间每天早上 5:00 运行。我认为您不需要比每天更频繁地运行它,因为您要删除 7 前的文件。

请不要过度使用 -exec 选项,当 -delete 选项完全符合您的要求时。 exec 为每个文件派生一个 shell,并且过度浪费系统资源。

完成后,您可以使用 crontab -l 列出您的个人 crontab。

附言。大多数 Linux 系统上的默认编辑器是 vi,如果你不知道 vi,可以通过设置环境变量 export EDITOR=nano 来使用像 nano 这样简单的编辑器

原文由 typedeaf 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题