每个月的第一个星期三关闭Linux服务器


1

我写了一个crontab条目:

00 19 1-7 * 3 /sbin/init 0

它应该在每个月的第一个星期三关闭我的linux服务器。不幸的是,服务器今天(星期四)发生了故障。任何人都可以告诉我为什么会这样发生,请告诉我如何解决它。

Answers:


6

的crontab(5)

   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.

这意味着你的 crontab中 输入将无法按预期工作。该命令将每天从每月的第1天到第7天以及每周三运行。

由于以上原因, cron的 单独无法决定是否是本月的第一个星期三。但是,您可以使用检查一个条件 cron的 并检查另一个 测试 日期

00 19 1-7 * * [ $(/usr/bin/date +\%w) = 3 ] && /sbin/init 0

这个怎么运作:

  • 该命令将在每月的第1天至第7天每天执行。

  • $(/usr/bin/date +\%w) 返回工作日。

  • [ ... = 3 ] && 检查工作日是否是星期三(3)。

  • 如果是, /sbin/init 0 被执行。

请注意,您必须转义百分号,因为它是特殊的 cron的


嗨丹尼斯,非常感谢您的回复。能否建议我在每个月的第一个星期三19:00关闭服务器的正确方法?
Reni

我差不多一个小时前发布了这个帖子,但是crontab并没有像我想象的那样表现。我正在更新我的答案。
Dennis

完成。因此,crontab中的百分号表示注释。你活着,你学习......
Dennis

非常感谢丹尼斯。非常感激。我会测试它并更新你。
Reni
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.