如何像 "crontab -e" 那样通过脚本检查 cron 语法?

How to check cron syntax by script like "crontab -e" does?

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

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

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

crontab -l > backup.cron

你可以直接安装一个你煮好的文件:

crontab yourFile.text

或者在脚本中使用管道:

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

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

更多信息:man crontab

您可以通过键入

检查您的 crontab 是否有 non-printing 个字符(通常是 crontab 损坏的原因)
crontab -l | cat -e

sudo crontab -l | cat -e

如果你有根 crontab。

使用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 中的 shell 脚本 48-verifycron,但效果不佳。