Crontab 问题:使用百分比时 Cron 作业不起作用
问题:当我在 cron 作业中使用百分比 '%' 时,我的 cron 作业没有被执行的原因是什么。如何解决这个问题?
答案: '%' 是 cron 命令中的新行说明符。因此,当您使用 % 时,它被解释为 cron 作业中的新行。让我们看看如何克服这个问题,并在 cron 作业中使用 %。
问题定义示例:cron 作业中的“%”(非成功的 cron 作业)
* * * * * date +"%d" >> /tmp/non-working-ex1.txt
出于测试目的,上述 crontab 示例中的所有字段都包含 *。这将每分钟执行一次指定的 cronjob。
如果您有权访问 syslog,您将看到如下类似的行。
Jun 20 08:31:01 ubuntu-laptop /USR/SBIN/CRON[6752]: (ramesh) CMD (date +")
在此特定示例的系统日志条目中,该命令仅显示为:(date +”)。理想情况下,这应该显示为:date +”%d”。这表明百分比被解析为 cron 中的特殊符号。即它正好在 %age 处终止命令。
示例解决方案:解决在 cron 作业中使用“%”的问题。
您可以使用以下两种方法解决此问题。该解决方案应该可以解决所有 Unix / Linux 版本的问题,包括 Ubuntu、Debian、Fedora、RedHat、CentOS、AIX 等,
方法 1:用 \ 转义百分比
您可以使用反斜杠转义百分比,并使其正常工作。
$ crontab -l
* * * * * date +"\%M" > /tmp/working-ex1.txt
注意: date 命令或您调用的任何其他命令都不会看到这个“\”。\ 是为了逃避 cron 中百分比的特殊行为。
方法二:使用Shell脚本
使用百分比命令创建一个 shell 脚本并将 shell 脚本安排为 cron 作业。
$ cat /bin/date.sh
date +"%d"
$ crontab -l
* * * * * /bin/sh /bin/date.sh > /tmp/working-ex2.txt
下一分钟,您将在 /tmp/working-ex2.txt 中
看到已执行的命令输出。现在,您将在系统日志中看到成功执行命令的以下行。
Jun 20 08:36:01 ubuntu-laptop /USR/SBIN/CRON[6962]: (ramesh) CMD (/bin/sh /bin/date.sh >> /tmp/working-ex2.txt)
注意:不要忘记删除这些测试 cron 条目,因为它每分钟都会执行一次。
- 点赞
- 收藏
- 关注作者
评论(0)