Liberar floco para um único comando no script bash

0

Eu tenho um script que é iniciado pelo cron todos os dias.

O comando de lançamento é algo como isto: flock -n /tmp/mylock.LOCK /path/to/script/script.sh

O script script.sh atualiza os arquivos de configuração do meu servidor e tenta reiniciá-lo (se estiver em execução, ele será reiniciado, caso contrário, será iniciado). Mas o problema é que esse servidor começa a conter o bloqueio /tmp/mylock.LOCK , o que impede que script.sh seja lançado no dia seguinte.

Posso de alguma forma executar o script para reiniciar meu servidor sem obter o bloqueio de arquivo no processo?

SO: Ubuntu 12.04

    
por Anton Guryanov 03.03.2015 / 11:01

1 resposta

0

Há uma opção -o , na primeira vez que a fiz perder a página man flock .

Citação da página do manual:

-o, --close
     Close  the file descriptor on which the lock is held before exe‐
     cuting command.  This  is  useful  if  command  spawns  a  child
     process which should not be holding the lock.

Por isso, faz exatamente o que eu preciso, agora apenas o processo pai flock mantém o bloqueio.

    
por 03.03.2015 / 13:40

Tags