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

寻求Linux命令行条件执行脚本及crontab每3天执行方案

解决crontab每3天执行任务的命令错误问题

你的问题出在直接执行算术表达式的求值结果:当$((...))计算结果为0时,shell会把这个0当作命令去执行,自然抛出"0: command not found"的错误。之前用echo没问题是因为echo只是把计算结果作为参数输出,而非执行它。

下面是两种修正后的可行命令:

方法1:使用bash的((条件判断结构

这是最简洁的方式,((...))本身会作为条件判断,返回正确的退出码(成立则0,不成立则1),无需额外展开结果:

bash -c '(( ($(date +%s) - $(date -d "2024-12-22" +%s)) / 86400 % 3 == 0 )) && /scripts/backup/db_bak.sh'

方法2:用if条件包裹判断逻辑

如果更习惯传统的条件写法,可以用[结合算术结果的相等判断:

bash -c 'if [ $(( ($(date +%s) - $(date -d "2024-12-22" +%s)) / 86400 % 3 )) -eq 0 ]; then /scripts/backup/db_bak.sh; fi'

另外注意:crontab的执行环境变量可能比交互式shell少,如果后续遇到脚本执行问题,可以在脚本开头指定完整的环境变量路径,或者在crontab命令里显式设置必要的PATH。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:14:55