You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写每月第13个工作日9点执行的Crontab表达式?

解决Crontab每月第13个工作日执行任务的问题

你之前用的0 9 13 * 1-5逻辑是每月13号且当天为周一至周五时执行,这和“每月第13个工作日”完全不是一回事——第13个工作日是指当月累计的第13个周一到周五,日期不固定(比如当月1号是周日的话,第13个工作日可能是19号)。

Crontab本身没有原生语法支持“第N个工作日”的判断,必须配合脚本实现,步骤如下:

1. 编写工作日判断脚本

创建一个Shell脚本(比如命名为check_13th_workday.sh),用来统计当天是否是当月第13个工作日:

#!/bin/bash

# 获取当前年月和当月第几天
current_year_month=$(date +%Y-%m)
current_day=$(date +%d)

# 统计从当月1号到今天的工作日总数
workday_count=0
for day in $(seq 1 $current_day); do
    day_of_week=$(date -d "$current_year_month-$day" +%w)
    # 周一到周五对应1-5,排除周日(0)和周六(6)
    if [ $day_of_week -ge 1 ] && [ $day_of_week -le 5 ]; then
        ((workday_count++))
    fi
done

# 若当天是第13个工作日,执行目标任务
if [ $workday_count -eq 13 ]; then
    # 替换成你实际要执行的命令
    # /path/to/your/task.sh
    echo "执行每月第13个工作日的任务"
fi

2. 赋予脚本执行权限

运行命令给脚本添加可执行权限:

chmod +x /path/to/check_13th_workday.sh

3. 配置Crontab定时任务

编辑Crontab:

crontab -e

添加以下规则,让脚本每天上午9点自动执行:

0 9 * * * /path/to/check_13th_workday.sh

保存退出后,Crontab会每天9点触发脚本,脚本内部会自动判断当天是否是当月第13个工作日,符合条件才执行你的目标任务。

内容的提问来源于stack exchange,提问作者dsp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:35:34