J'utilise Rsnapshot pour les sauvegardes (Linux CentOS 6).
Voici mon /etc/cron.d/rsnapshot
:
30 11 * * * root /usr/bin/rsnapshot nowandthen > /backups/rsnapshot_cron.txt 2>&1
15 11 * * 4 root /usr/bin/rsnapshot weekly > /backups/rsnapshot_cron.txt 2>&1
00 11 24-31 * 4 root /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1
La sauvegarde mensuelle devait être exécutée tous les jeudi derniers de chaque mois.
Cependant, la sauvegarde mensuelle est exécutée aujourd'hui, jeudi, 2016-février-18 à 11h00. Aujourd'hui n'est pas jeudi dernier dans un mois.
Quel est le problème avec ma crontab?
date
? Quelque chose de pertinent dansgrep CRON /var/log/syslog
?crontab
fichiers: en plus des/etc
entrées, il y en a un pour chaque utilisateur, y comprisroot
. Quoi qu'il en soit, votre script ne fera pas ce que vous voulez: si le dernier jour d'un mois de 31 jours est un jeudi, il se déroulera les 24 et 31 janvier; si le dernier jour de février est un mercredi, il ne fonctionnera pas du tout.Réponses:
Selon ce site , votre chaîne signifie «À 11 heures les 24, 25, 26, 27, 28, 29, 30 et 31 de chaque mois et chaque jeudi.» (C'est moi qui souligne). Si le site est correct, cela expliquerait pourquoi il a fonctionné le 18.
L'exemple d'entrée
man 5 crontab
pour s'exécuter le 2e samedi est le suivant:(c’est-à-dire exécuter tous les jours de la deuxième semaine et vérifier le jour de la semaine dans le cadre de la commande) - cela confirme le point de vue selon lequel le jour de la semaine est un filtre alternatif supplémentaire et non une qualification supplémentaire, bien que la page de manuel ne le rende pas. clair.
Donc, dans votre cas, j'utiliserais:
Vérifiez si vos
date
supports-d 'next Thursday'
: si oui, vous pouvez utiliser le plus simple:Cela fonctionne tous les jeudis et vérifie si la date dans une semaine (604800 secondes) est maintenant identique: sinon, il doit s'agir du dernier jeudi pour que la commande de sauvegarde s'exécute.
la source
-d "next thursday" +%m
vous permet de sauter une sous-commande imbriquée.bash
Ubuntu, et aucune évasion n'a été nécessaire, bien que je ne l'ait pas enregistréecrontab
, car le test serait trop difficile. J'imagine que cela serait nécessaire dans un environnement GNU / Windows, mais je changerai de réponse car cela ne peut pas nuire. Merci pour le conseil "jeudi prochain": cela fonctionne sur Ubuntu, je vais donc l'intégrer.crontab
syntaxe; alors oui, cela fonctionnerait à l’invite sans s’échapper.