A prática padrão é usar um arquivo pid. Toda vez que o script é executado, verifique se um arquivo está sendo executado em algum lugar. A ordem das operações é descrita abaixo.
- leia o pid em
/var/run/yourscriptname.pid
- verifique se o pid está em execução, saia se for
- pegue seu pid, escreva para
/var/run/yourscriptname.pid
- executar como normal
- remover o arquivo pid
No seu caso, isso funcionará, mas há alguns casos em que um script pode ser chamado rápido o suficiente para que, no tempo entre a verificação do pid e a gravação do pidfile, outro processo seja iniciado e também não veja pidfile e continue sendo executado. Você pode apertar ainda mais as coisas usando o bloqueio consultivo. É uma facilidade que o sistema operacional fornece em praticamente todos os Unix.
Referências: