O snippet de bloqueio "padrão" que eu vi é algo como ...
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
É seguro (o teste parece dizer isso) usar exec
nesse ponto? O subprocesso reterá a trava?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
Lembro-me vagamente de que os processos executados mantêm descritores de arquivos abertos e, como o rebanho usa descritores de arquivos, deve funcionar. Mas não consigo encontrar nenhuma documentação que torne isso definitivo e claro.
Para o registro, isso é específico para Linux.