| 用途 | 实现非固定日历的调度 |
|---|---|
| 手法 | date 判断 / 多行组合 / OnCalendar |
最后一天写法
最后一天写法
# 每天跑,只在明天是 1 号时执行(即今天是月末)
0 8 * * * [ "$(date -d tomorrow +\%d)" = 01 ] && /opt/scripts/month-end.sh
# 多行组合:覆盖 28/29/30/31 且判断月末(冗余触发靠脚本内判断去重)
0 8 28-31 * * [ "$(date -d tomorrow +\%d)" = 01 ] && /opt/scripts/month-end.shsystemd 写法
systemd 写法
# ~ 表示当月最后一天(systemd 236+)
OnCalendar=*-*-~1 08:00:00每周第几天、每月第几个周一同理:把判断放进脚本最通用,OnCalendar 语法更简洁但可移植性要求 systemd 版本。