将 crontab 作业安排在当月的最后一个星期日



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

开始于 (有效(

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,那么是的,否则不(

但是当我试图纳入须藤的 crontrab 时

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

我什么也没得到。

我做错了什么?

创建简单的脚本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.月.sh

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

最新更新