Cette question cherche à fournir une réponse appropriée.
scurker
1
Oui, mais cette question concerne le mardi, pas le mercredi;) La réponse acceptée est cependant intelligente.
edoloughlin
>> Oui, mais cette question concerne le mardi, pas le mercredi;) La réponse acceptée est intelligente, cependant ... qu'est-ce qui est si difficile de changer le mardi en mercredi?
ajreal
0 * * * 3 test $ (date \ +% u) -eq 3 && echo "start run me" essayez ceci. n'a pas collé à la réponse, car une question de base est assez vague.
Réponses:
14
Ma page de manuel pour crontab (que je n'arrive malheureusement pas à trouver en ligne) donne l'exemple suivant:
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
Pour toute personne souhaitant modifier cette réponse, la raison pour laquelle vous n'utilisez pas uniquement le champ jour de la semaine est que si le jour du mois et le jour de la semaine sont restreints (c'est-à-dire ne le sont pas *), la commande s'exécutera lorsque l'un ou l'autre correspond .
J'ai trouvé que je devais échapper au% u, donc:date +\%u
Antony D'Andrea
3
Vous pouvez éviter d'exécuter un script externe en utilisant une combinaison de l'astuce du jour de la semaine et du jour de la semaine:
# Run on every second Wednesday of the month
0 4 8-14 * Wed job.sh
Cela évite également d'exécuter un autre programme externe. Le 8-14 sélectionne tous les jours qui correspondent à la deuxième semaine du mois. Ensuite, il filtre juste ce mercredi.
Pour les serveurs CentOS 7, cela semble être la syntaxe qui fonctionne pour moi. Veuillez noter les espaces autour du [et ]. Cela m'a pris du temps à comprendre.
Cela exécute le test.shfichier à 13h07 / 13h07 le deuxième mercredi du mois. (0 = dimanche, 1 = lundi, 2 = mardi, 3 = mercredi, etc.)
Réponses:
Ma page de manuel pour crontab (que je n'arrive malheureusement pas à trouver en ligne) donne l'exemple suivant:
L'adaptation à vos besoins ...
la source
*
), la commande s'exécutera lorsque l'un ou l'autre correspond .date +\%u
Vous pouvez éviter d'exécuter un script externe en utilisant une combinaison de l'astuce du jour de la semaine et du jour de la semaine:
Cela évite également d'exécuter un autre programme externe. Le 8-14 sélectionne tous les jours qui correspondent à la deuxième semaine du mois. Ensuite, il filtre juste ce mercredi.
la source
Il n'est pas possible d'utiliser cron seul, mais vous pouvez appeler un script une fois par semaine pour effectuer le test:
Dans crontab, exécutez second_wed.sh à 12h00 tous les mercredis:
Dans second_wed.sh:
la source
Sur la base de cette réponse, vous pourriez faire:
la source
Pour les serveurs CentOS 7, cela semble être la syntaxe qui fonctionne pour moi. Veuillez noter les espaces autour du
[
et]
. Cela m'a pris du temps à comprendre.Cela exécute le
test.sh
fichier à 13h07 / 13h07 le deuxième mercredi du mois. (0 = dimanche, 1 = lundi, 2 = mardi, 3 = mercredi, etc.)la source
Feu à 10h15 le troisième vendredi de chaque mois:
0 15 10 ? * 6#3
Source: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
la source