如何通过类似“crontab -e”的脚本检查cron语法?

10

假设我通过脚本编写cron文件并直接在/var/spool/cron/crontabs/下修改它们。当使用命令crontab -e时,当我退出编辑器时,crontab将检查语法。是否有办法通过脚本进行相同的检查?

2个回答

6

使用-e选项的Crontab会打开当前cron文件并在退出后将其安装到默认编辑器中。

首先,保存您当前的cron文件以确保不会丢失或破坏任何内容。

crontab -l > backup.cron

您可以直接安装您制作的文件:
crontab yourFile.text

或者在脚本中使用管道:

#/bin/bash
Variable="your scheduled tasks"
echo $Variable | crontab

如果格式不正确,您将收到错误消息。

更多信息: crontab手册


请记住,这将删除以前存在的任何crontab,请在执行操作前使用“crontab -l”进行检查。 - golimar
@golimar 是的,当你接触到这种配置文件时,所有的保护都是好的。我会采纳你的建议更新我的回答。 - blashser

3
请使用 chkcrontab 工具:
pip3 install chkcrontab

chkcrontab /etc/cron.d/power-schedule
Checking correctness of /etc/cron.d/power-schedule
E: 15: 0 12 * foo * * root echo hi
e:     FIELD_VALUE_ERROR: foo is not valid for field "month" (foo)
e:     INVALID_USER: Invalid username "*"
E: There were 2 errors and 0 warnings.

或者尝试从 Wicked Cool Shell Scripts, 2nd Edition 使用一个名为 48-verifycron 的 shell 脚本,但它不如其他方法好。


1
我开始使用Git来管理我的cron作业,而“chkcrontab”则帮助我在Bash脚本中检查文件是否有效,然后再将它们推送到crontab中。它完美地运行! - michabbb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接