Vous pourriez utiliser sem
qui fait partie de GNU parallel
.
0 0 * * * root sem --jobs 1 --id MyQueue mysql -xxxxxx -pyyyyyyyyyyv -hlocalhost -e "call MyFunction1"
1 0 * * * root sem --jobs 1 --id MyQueue wget -N http://mywebsite.net/path/AfterMyFunction1.php
Cette configuration cron va d'abord lancer le mysql
par le biais de sem
qui le placera dans une sorte de file d'attente appelée MyQueue
. Cette file d'attente sera probablement vide, de sorte que le mysql
est exécuté immédiatement. Une minute plus tard, le cron lancera un autre sem
qui mettra le wget
dans la même file d'attente. Avec --jobs 1
, sem
a pour instruction d'exécuter un seul travail à la fois dans cette file d'attente particulière. Dès que le mysql
est terminé, le deuxième sem
exécutera le wget
commandement. sem
dispose de nombreuses options pour contrôler le comportement des files d'attente. Par exemple, si vous ajoutez --semaphoretimeout -60
un travail en attente mourra simplement après 60 secondes.
El &&
est probablement meilleure, puisqu'elle n'exécutera pas la deuxième commande si la première échoue. Le site sem
a l'avantage de vous permettre de spécifier des paramètres de cron différents, comme un utilisateur différent. Et elle empêchera le chevauchement des tâches cron, si l'intervalle cron est plus court que la durée de la tâche.