Linux

cronjob 每 4 週一次,不執行

  • December 23, 2020

我在我的 Ubuntu 無頭伺服器 18.04 上使用 cron,但以下 cron 未執行:

30 13 * * 6 test $((10#$(date +%W)%4)) -eq 1 && /bin/bash /backup/test.sh

我在shell中測試了命令:

test $((10#$(date +%W)%4)) -eq 1 && /bin/bash /backup/test.sh

它工作正常,但如果它在 cron 中,它不會執行它。

cron 中使用的“錯誤”shell

您的測試似乎命令使用的語法可能會被除bash. Cron預設使用/bin/shshell。

可供選擇的可能修復:

**a)**將test參數用單引號括起來並強制“正確”外殼

0 13 * * 6 /bin/bash -c 'test $((10#$(date +%W)%4)) -eq 0' && …

**b)**將您的測試命令移動到在shebang中使用明確選擇的shell分隔的執行檔:

#!/bin/bash
exec test "$((10#$(date +%W)%4))" -eq 1

**c)**更改使用的外殼cron。在 crontab 添加行

SHELL=/bin/bash  

在您的情況下,特定情況選項“a”似乎是最好的,但其他選項可能最好地解決類似的問題。

引用自:https://serverfault.com/questions/1005985