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