![如何验证 cron 作业中的语法](https://linux22.com/image/139290/%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%20cron%20%E4%BD%9C%E4%B8%9A%E4%B8%AD%E7%9A%84%E8%AF%AD%E6%B3%95.png)
我们正在创建一个新的 cron 作业/etc/cron.d
。
这个 cron 作业大约有 56 行,所有命令都应该在每个月初执行。
我正在寻找验证 cron 作业语法的建议。
我的意思是,如何验证 cron 作业文件是否配置正确且没有错误 - 是否有一些命令可以验证这一点?
答案1
这是用 awk 编写的验证器的开始,它检查:
- 对于非注释行
- 对于具有足够字段的行,使其看起来像 crontab 条目
- 其中 $3 中的月份值不是 1 或 *
- 其中月份值不是
*
...然后打印(有问题的)行。
样本输入:
53 23 * * * root /usr/lib64/sa/sa2 -A
53 23 1 * * root /usr/lib64/sa/sa2 -A
53 23 2 * * root /usr/lib64/sa/sa2 -A
输出是:
53 23 2 * * root /usr/lib64/sa/sa2 -A
@monthly
正如 cron 语法所允许的那样,必须对其进行增强以处理月份名称和范围(甚至)。
awk '!/^#/ && NF >= 7 && ($3 != 1 && $3 != "*") && $4 != "*" 1'