Linux
cronjob 每 4 週一次,不執行
我在我的 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/sh
shell。可供選擇的可能修復:
**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”似乎是最好的,但其他選項可能最好地解決類似的問題。