我寫了一個 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
則被處死。
請注意,您必須轉義百分號,因為它是特殊的計劃任務。