排程 crontab 時間設定月底執行方法
Contents
最近專案需要設定排程
主機上面的時區是 UTC+0 時間
但我們需要照 GMT+8 執行
排程往前面推-8 小時
但這時候遇到一個問題了
設定月初時間會跨前一天問題
排程設定 L 字符
0 16 L * * *
有些排程工具是支援的 (spring, quartz)
LINUX crontab 不支援
shell 程式執行判斷
最近專案需要在 Rancher 設定
所以上面的方法無法用
有參考使用Crontab 每月最後一天執行 Shell Script
可以完成,範例如下
|
|
簡單說明就是 Rancher 要跑的 JOB 要多一個 MODE
環境變數
透過這個知道哪個要執行月底執行,有些不用
crontab 簡單判斷方法
55 23 28-31 * * [[ “$(date –date=tomorrow +%d)” == “01” ]] && myjob.sh
參考automation - Cron job to run on the last day of the month - Stack Overflow
其他 date 設置可以參考
Linux 使用 date 計算時間(昨天、明天) | Tsung’s Blog
linux 中用 shell 获取时间,日期 - ccmaotang - 博客园
shell 跑時間迴圈方法
另外 shell 跑時間迴圈方法
Bash: Looping through dates - Stack Overflow
|
|
其他參考來源:
- automation - Cron job to run on the last day of the month - Stack Overflow
- shell - How to check if a variable is set in Bash? - Stack Overflow
- Cron allowed special character “L” for “Last day of the month” on Debian - Unix & Linux Stack Exchange
- cron - Wikipedia
- date - Jenkins -run job 2 days before end of every month - Stack Overflow
- cron-last-sunday/run-if-today at master · xr09/cron-last-sunday
- 鳥哥的 Linux 私房菜 – 第十五章、例行性工作排程(crontab)
- linux下crontab与anacrontab的使用 - 小柒吃地瓜