我已经写了一个 crontab 条目,如下所示:
00 19 1-7 * 3 /sbin/init 0
它应该在每个月的第一个星期三关闭我的 Linux 服务器。不幸的是,服务器今天(星期四)关闭了。有人能告诉我为什么会发生这种情况吗?请告诉我如何修复它。
答案1
Note: The day of a command's execution can be specified by two fields --
day of month, and day of week. If both fields are restricted (ie,
aren't *), the command will be run when either field matches the cur-
rent time.
这意味着你的定时任务输入将无法按预期工作。该命令将每月 1 日至 7 日每天运行,此外每周三也运行。
由于上述情况,计划任务无法单独判断是否是该月的第一个星期三。但是,您可以使用以下方法检查一个条件:计划任务并检查另一个测试和日期:
00 19 1-7 * * [ $(/usr/bin/date +\%w) = 3 ] && /sbin/init 0
怎么运行的:
该命令将从每月1号到7号每天执行。
$(/usr/bin/date +\%w)
返回星期几。[ ... = 3 ] &&
检查该星期几是否是星期三 (3)。如果是,
/sbin/init 0
则执行。
请注意,您必须转义百分号,因为它对于计划任务。