我的 cron 命令好吗?

我的 cron 命令好吗?

我尝试使用以下cron命令每周清理一次日志:

@weekly find /var/log/ \( -iregex ".*\.[2-20]+" -o -iname "*.gz" \) -exec rm {} \; 2>&1

好吗?

答案1

[2-20]+不是测试数字是否在 from2到范围内的正确方法20。正则表达式中的方括号仅匹配与其中的任何字符相匹配的单个字符。并且-在字符集中用于指定字符范围(例如2-9a-z);范围2-2与 相同2。 So[2-20]+相当于[20]+, 匹配任意字符2和序列0,例如2, 20, 02,2200等。

它应该是([2-9]|1[0-9]|20)。这与2to中的单个数字匹配91后跟0to920

如果您使用的是 GNU find,则可以使用-delete运算符代替-exec rm {} \;

2>&1如果您不重定向标准输出,则无需使用。默认情况下,标准输出和标准错误都作为邮件发送给用户。

@weekly find /var/log/ \( -iregex '.*\.([2-9]|1[0-9]|20)' -o -iname "*.gz" \) -delete

相关内容