【问题标题】:Schedule crontab job for last sunday in the month [closed]安排本月最后一个星期日的 crontab 作业 [关闭]
【发布时间】:2017-07-03 19:56:57
【问题描述】:

我们希望扩展我们的备份系统以包括每月一次的最终备份。它将在本月的最后一个星期日执行,但下面的代码是为了让我今天可以看到它在较小的范围内工作。

开始于(有效)

0 12 * * 0 sudo tar -cpzf /media/BackupDisk/wwwJUNEbackup.tar.gz /var/www

已经在互联网上搜索并提出了这段代码,并在脚本文件中进行了测试

 if [ $(date +%d -d '+7 days') -le '8' ] ; then
    echo "Yes"
else
    echo "No"
fi

(作为参考,这里说 - 如果今天的日期 + 7 天小于或等于 8,则为 YES,否则为 NO)

但是当我尝试包含到 Sudo 的 crontrab 中时

26 17 * 6 5 [ $(date +%d -d '+7 days') -lt '8' ] && sudo tar -cpzf /media/BackupDisk/wwwJUNEbackup.tar.gz /var/www

我一无所获。

我做错了什么?

【问题讨论】:

标签: linux ubuntu cron backup


【解决方案1】:

创建简单的脚本 last_weekday_in_month.sh 并在您的 crontab 条目中使用它。
您使用的语法远远超出基本 shell => 恕我直言,最好将其移动到具有通过 #!/... 强制执行的特定 shell 的琐碎脚本中

 12 * * 0 /path/last_weekday_in.month.sh && sudo tar -cpzf /media/BackupDisk/wwwJUNEbackup.tar.gz /var/www

last_weekday_in.month.sh

#!/bin/bash
if [ $(date +%d -d '+7 days') -lt '8' ] ; then
  exit 0    
else
  exit 1
fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多