Crontab 问题:使用百分比时 Cron 作业不起作用

举报
Tiamo_T 发表于 2021/12/20 08:23:30 2021/12/20
【摘要】 问题:当我在 cron 作业中使用百分比 '%' 时,我的 cron 作业没有被执行的原因是什么。如何解决这个问题? 答案: '%' 是 cron 命令中的新行说明符。因此,当您使用 % 时,它被解释为 cron 作业中的新行。让我们看看如何克服这个问题,并在 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 条目,因为它每分钟都会执行一次。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。