Eu recomendaria usar o comando executar um - muito mais simples do que lidar com os bloqueios. Dos documentos:
run-one é um script de wrapper que executa não mais que uma instância exclusiva de algum comando com um conjunto exclusivo de argumentos. Isso geralmente é útil com cronjobs, quando você não deseja mais de uma cópia em execução por vez.
O run-this-one é exatamente como o run-one, exceto que ele usará o pgrep e o kill para encontrar e eliminar todos os processos em execução pertencentes ao usuário e correspondentes aos comandos e argumentos de destino. Observe que executar este bloqueará ao tentar eliminar os processos correspondentes, até que todos os processos correspondentes estejam mortos.
A execução um funciona constantemente exatamente como a execução um, exceto que ele reaparece "COMMAND [ARGS]" sempre que o COMMAND sai (zero ou diferente de zero).
keep-one-running é um alias para run-one-constantemente.
executar um até o sucesso opera exatamente como executar um constantemente, exceto que ele reaparece "COMMAND [ARGS]" até que o COMMAND saia com êxito (ou seja, sai zero).
executar um até a falha opera exatamente como executar um constantemente, exceto que ele reaparece "COMMAND [ARGS]" até que COMMAND saia com falha (ou seja, sai diferente de zero).