Recomendaría usar el comando run-one , mucho más simple que lidiar con los bloqueos. De los documentos:
run-one es un script de contenedor que no ejecuta más de una instancia única de algún comando con un conjunto único de argumentos. Esto suele ser útil con cronjobs, cuando no desea que se ejecute más de una copia a la vez.
run-this-one es exactamente como run-one, excepto que usará pgrep y kill para encontrar y eliminar cualquier proceso en ejecución propiedad del usuario y que coincida con los comandos y argumentos de destino. Tenga en cuenta que run-this-one se bloqueará al intentar eliminar procesos coincidentes, hasta que todos los procesos coincidentes estén muertos.
run-one-constantemente opera exactamente como run-one, excepto que reaparece "COMANDO [ARGS]" cada vez que sale de COMANDO (cero o no cero).
keep-one-running es un alias para run-one-constantemente.
ejecutar-uno-hasta-el-éxito funciona exactamente como ejecutar-uno-constantemente, excepto que reaparece "COMANDO [ARGS]" hasta que COMANDO sale con éxito (es decir, sale de cero).
ejecutar-uno-hasta-falla funciona exactamente como ejecutar-uno-constantemente, excepto que reaparece "COMANDO [ARGS]" hasta que COMANDO sale con falla (es decir, sale de cero).