Oltre ad altre risposte, in particolare il link pubblicato da @soulcake: se pianifichi un comando long running con un intervallo troppo breve, cron eseguirà felicemente il secondo prima del completamento del primo (a meno che non ci sia una sorta di mutex implementato nel comando) .
Ciò spesso rallenta ulteriormente il comando originale, portando a eseguire un'altra istanza prima del completamento di quelle precedenti, ecc. Oppure potrebbe non essere desiderabile per altri motivi.
Il modo generale per prevenire è condizionare l'esecuzione del comando con una protezione che garantisce che un comando precedente non sia in esecuzione. Per esempio:
10 * * * * pgrep my_slow_command >/dev/null || /usr/local/bin/my_slow_command
Assicurati che pgrep corrisponda al nome del comando quando viene eseguito, ad esempio gli script python hanno python come nome dell'eseguibile, che probabilmente non è abbastanza specifico e dovresti corrispondere anche con il nome dello script del python.
10 * * * * pgrep -f my_script.py || /usr/local/bin/my_script.py
(pgrep senza l'opzione '-f' corrisponde però ai nomi degli script bash)
Se non puoi usare pgrep per qualche motivo:
10 * * * * ps ax | grep [m]y_command || /usr/local/bin/my_command
Le parentesi vengono utilizzate per evitare la corrispondenza del comando grep stesso.