En plus d'autres réponses, en particulier le lien publié par @soulcake: Si vous planifiez une commande longue avec un intervalle trop court, cron exécutera avec plaisir la seconde avant la fin de la première (à moins qu'il n'y ait une sorte de mutex implémenté dans la commande) .
Cela ralentit souvent encore plus la commande d'origine, entraînant l'exécution d'une autre instance avant la fin des précédentes, etc. Ou cela peut être indésirable pour d'autres raisons.
La manière générale d'empêcher est de conditionner l'exécution de la commande avec un garde qui garantit qu'une commande précédente n'est pas en cours d'exécution. Par exemple:
10 * * * * pgrep my_slow_command >/dev/null || /usr/local/bin/my_slow_command
Assurez-vous que pgrep correspond au nom de la commande lors de son exécution, par exemple, les scripts python ont python comme nom de l'exécutable, ce qui n'est probablement pas assez spécifique et vous devrez également faire correspondre le nom du script python.
10 * * * * pgrep -f my_script.py || /usr/local/bin/my_script.py
(pgrep sans l'option '-f' correspond cependant aux noms des scripts bash)
Si vous ne pouvez pas utiliser pgrep pour une raison quelconque:
10 * * * * ps ax | grep [m]y_command || /usr/local/bin/my_command
Les crochets sont utilisés pour éviter de faire correspondre la commande grep elle-même.