考虑到YEAR,我怎样才能在CRON中指定时间?

时间:2011-10-11 10:02:27

标签: linux cron

我的任务是在考虑YEAR字段的CRON中指定时间。我怎么能这样做,或者你知道哪些东西可以帮助我在linux服务器上? THX

4 个答案:

答案 0 :(得分:4)

Crontab(5)文件格式没有YEAR字段。您可以尝试@yearly(在新年当天00:00)运行一个cron作业,它使用date(1)查看当前年份,并将当前的crontab文件更新为适合新年的文件。

答案 1 :(得分:4)

标准cron不支持年份字段,但值得注意的是,某些实现支持具有第六个year字段的扩展crontab格式,例如nnCron。并非每个cron都是平等的。

答案 2 :(得分:2)

如先前文章中所述,您不能指示年份字段,但是可以模仿它:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *   command to be executed
  0  0  1  1  *   [[ $(date "+\%Y") == 2020 ]] && command1
  0  0  1  1  *   (( $(date "+\%Y") % 3 == 0  )) && command2
  0  0  1  1  *   (( $(date "+\%Y") % 3 == 1  )) && command3

在这里,command1将在2020-01-01T00:00:00运行,command2将在1月1日午夜每3年运行一次,它将在2019年2022年运行,2025年,...。 command3的用途与command2相同,但具有一年的偏移量,即2020、2023、2026,...

注意:不要忘记,您必须在crontab文件中转义字符(%):

  

“第六个”字段(该行的其余部分)指定要运行的命令。该行的整个命令部分,直到换行符或   “ %”字符将由/bin/sh或cronfile的SHELL变量中指定的shell执行。除非使用反斜杠(%)进行转义,否则命令中的“ \”字符将被更改为换行符,并且第一个%之后的所有数据都将发送到命令作为标准输入。

     

来源:man 5 crontab

答案 3 :(得分:0)

var task = cron.schedule('0 0 1 1 *', () => {
    console.log('Printing this line 1ST JANUARY OF EVERY YEAR in the terminal');
});

是考虑年份领域的工作。 @ mart7ini