E-Rick Asked: 2020-11-21 00:55:13 +0800 CST 2020-11-21 00:55:13 +0800 CST 2020-11-21 00:55:13 +0800 CST 如何对 crontab 进行编程以在该月的最后一天运行任务? 772 我正在寻找如何安排本月最后一天的任务。但我发现像这样非常扭曲的解决方案: [code language="bash"]59 23 28-31 * * ["$(date +%d -d 明天)" = "01"] && execute_this[/code] 必须有一个更具可读性的解决方案!!! linux 2 Answers Voted Best Answer Jose Velasco 2020-11-21T01:22:57+08:002020-11-21T01:22:57+08:00 您可以将其分解以使其更具可读性,如下所示: # min hr date month dow 59 23 31 1,3,5,7,8,10,12 * execute_this 59 23 30 4,6,9,11 * execute_this 59 23 28,29 2 * execute_this 您还可以将日期验证传递给一个小脚本并运行: 59 23 28-31 * * check_date.sh && execute_this 一些 crons,比如 Quartz,也实现了“L”标志,它代表了一个月的最后一天,并且这样使用: 0 59 23 L * execute_this 石英字体:特殊字符 我希望这可以帮助你。 Cuauhtli 2020-11-21T02:31:59+08:002020-11-21T02:31:59+08:00 这不是一个非常扭曲的解决方案,实际上它是最简单、完整、具体和优雅的解决方案之一。 意思是: # min hour day month dow command 01 00 * * * [ "$(date +%d -d tomorrow)" = "01" ] && instruccion 很简单,就是 每隔这么多执行一次:分钟、小时、一个月中的几天、几个月、一周中的几天,以下指令序列 指令序列由两个组成:第一个是询问“明天是 01 日吗?”的验证,因为如果明天是 01 日,那么今天是该月的最后一天 如果它通过了该指令,那么它将返回 true 并执行以下指令。 这样您就不必编写 @JoseVelasco 为cron传统部分所做的所有事情。 该命令date +%d -d tomorrow使用命令获取“date后天”-d tomorrow(下个月? ”相当于问“今天是本月的最后一天吗?”。+%d
您可以将其分解以使其更具可读性,如下所示:
您还可以将日期验证传递给一个小脚本并运行:
一些 crons,比如 Quartz,也实现了“L”标志,它代表了一个月的最后一天,并且这样使用:
石英字体:特殊字符
我希望这可以帮助你。
这不是一个非常扭曲的解决方案,实际上它是最简单、完整、具体和优雅的解决方案之一。
意思是:
很简单,就是
指令序列由两个组成:第一个是询问“明天是 01 日吗?”的验证,因为如果明天是 01 日,那么今天是该月的最后一天
如果它通过了该指令,那么它将返回 true 并执行以下指令。
这样您就不必编写 @JoseVelasco 为
cron
传统部分所做的所有事情。该命令
date +%d -d tomorrow
使用命令获取“date
后天”-d tomorrow
(下个月? ”相当于问“今天是本月的最后一天吗?”。+%d