use*_*884 12 linux cron ubuntu-12.04
你好.我想从文件夹中删除过去7天内的所有日志文件,但保留所有其他文件.我可以使用以下命令吗?你如何指定它只删除.log扩展名的文件?
find /path/to/file -mtime +7 -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
我是否需要将此命令写入某个文件,或者我可以在命令提示符下编写它并让它每天自动运行?
我不知道如何在linux中运行cron作业.
Up_*_*One 19
使用通配符.而只是把它放在你的crontab
使用crontab -e命令选项,编辑您的crontab作业.
见例子:
* * * * * find /path/to/*.log -mtime +7 -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
只是为了增加答案,请查看这篇关于如何使用你的好文章crontab
!在Linux中.
编辑:将corntab更新到crontab
您可以通过运行来编辑您的个人 crontab crontab -e
.这将保存到/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
Run Code Online (Sandbox Code Playgroud)
当您编辑自己的个人 crontab时crontab -e
,您将省略用户名字段,因为用户是通过文件名推断的(参见第一段).
话虽如此,您的参赛作品应如下所示:
* * * * * find /path/to/*.log -mtime +7 -delete
Run Code Online (Sandbox Code Playgroud)
-exec
当-delete
选项完全符合您的要求时,请不要使用过度使用该选项.exec为每个文件分配一个shell,并且在系统资源上过度浪费.
完成后,您可以使用crontab -l
列出您的个人crontab.
PS.大多数Linux系统上的默认编辑器是vi,如果你不了解vi,可以通过设置environ变量来使用像nano这样简单的东西export EDITOR=nano
find /path/to/dir-containing-files -name '*.log' -mtime +7 -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
要创建 cron 作业,请将包含以下内容的文件放入 /etc/cron.daily 目录:
#!/bin/sh
find /path/to/dir-containing-files -name '*.log' -mtime +7 -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39669 次 |
最近记录: |