每個月第一個星期三關閉 Linux 伺服器

每個月第一個星期三關閉 Linux 伺服器

我寫了一個 crontab 條目:

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

它應該在每個月的第一個星期三關閉我的 Linux 伺服器。不幸的是,伺服器今天(星期四)關閉了。誰能告訴我為什麼會這樣,並請告訴我如何解決它。

答案1

定時任務(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.

這意味著您的定時任務條目將無法按預期工作。該命令將從每月 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則被處死。

請注意,您必須轉義百分號,因為它是特殊的計劃任務

相關內容