Parece que você quer manter seu daemon em execução pelo cron. Se sim, não é uma boa ideia. Por que esse bando às vezes falha? Você usa o diretório / tmp. Talvez outro processo remova arquivos antigos. Quando isso é feito, o bando ainda mantém arquivos flocados, mas apagados. Em outra rodada de cron de 10 minutos, outra instância flock não vê este arquivo, cria outro e executa uma cópia desnecessária. Resolução, mova seu arquivo de bloqueio para o diretório / var / run ou para outro local. Se o seu daemon geralmente terminar de funcionar, considere os códigos de saída. Atribuir algum código de saída para o sinal INT15. Execute o seu daemon a partir de um loop 'infinito'. Esse loop deve detectar, seu daemon é morto por sig15 ou outro. quando outro, simplesmente outro loop. se 15, deixe o loop e termine seu daemon ao vivo. você pode usar o pacote runsv, disponível em debian e redhat. funciona completamente diferente do cron. ele executa seu script / daemon executável e aguarda que ele termine ou trave. quando isso acontecer, reinicie-o. Então você não precisa prestar atenção para executar duas vezes seu código, e pode terminar o jogo com o cron, porque o cron não é para esse trabalho.