今天朋友跟我讨论了一个问题,crontab的语法是“分 时 日 月 周 command”,那我们如何实现在每个月的第一个周六来执行某个命令或脚本呢?

经过思考我个人想到一种解决方案
1、先做个每周六执行的计划;
2、计划里执行一个脚本,脚本的内容是判断data +%e的执行结果,如果小于7的话来执行你需要执行的命令或脚本。

每个月的第一个周六:
0 0 * * 6 运行你的脚本

脚本里内容是

=====================================================================
#!/bin/bash

t=$(date +%e)

if [ "$t" -le 7 ];
then
        你需要执行的命令;
fi
======================================================================

又有朋友问,那如果是第二个周六如何,解决方法如下,我们修改脚本为

=====================================================================
#!/bin/bash

t=$(date +%e)

if [ "$t" -ge 8 ] && [ "$t" -le 13 ];
then
        你需要执行的命令;
fi
======================================================================


精简了一下,也可以这样写

0 0 * * 6 [ "$\(date +\%e\)" -le 7 ]&&要执行的命令