你好。我想从文件夹中删除过去 7 天的所有日志文件,但保留所有其他文件。我可以使用下面的命令吗?您如何指定它只删除扩展名为 .log 的文件?
find /path/to/file -mtime +7 -exec rm -f {} \;
我是否需要将此命令写入某个文件,或者我可以将其写入命令提示符并让它每天自动运行?
我不知道如何在 linux 中运行 cron 作业。
原文由 Harry 发布,翻译遵循 CC BY-SA 4.0 许可协议
你好。我想从文件夹中删除过去 7 天的所有日志文件,但保留所有其他文件。我可以使用下面的命令吗?您如何指定它只删除扩展名为 .log 的文件?
find /path/to/file -mtime +7 -exec rm -f {} \;
我是否需要将此命令写入某个文件,或者我可以将其写入命令提示符并让它每天自动运行?
我不知道如何在 linux 中运行 cron 作业。
原文由 Harry 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过运行 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 许可协议
7 回答5.4k 阅读
4 回答4.1k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答841 阅读✓ 已解决
2 回答3.3k 阅读
1 回答1.1k 阅读✓ 已解决
使用通配符。只需将其放入您的
crontab
使用crontab -e
选项来编辑您的 crontab 作业。参见示例:
只是为了增加答案,请查看这篇关于如何使用您的
crontab
的好文章!在 Linux 中。