Existe uma desvantagem em usar o flock em tarefas cron?

0

Eu uso vários trabalhos cron, onde eles correm com freqüência eu uso flock para impedir que trabalhos duplicados sejam executados. Eu apenas pensei que parece fazer sentido usar flock em todos os trabalhos, independentemente da frequência, mas existe alguma desvantagem em fazer isso?

Eu sou 100% Linux com o servidor Mint, Raspbian e Ubuntu.

Mick Sulley
fonte

Respostas:

0

A única desvantagem consistente é que há sobrecarga extra para usar flock. Além do aspecto óbvio de ter que abrir um arquivo e bloqueá-lo, você também tem o fato de que haverá outro processo envolvido (ou pelo menos um executável extra e uma chamada para exec() se você estiver usando o --no-fork opção), e há alguma sobrecarga extra na limpeza (porque o sistema operacional tem que liberar o bloqueio quando ele fecha automaticamente o arquivo).

Há também algumas outras desvantagens realmente situacionais específicas para bloquear tarefas agendadas como esta (isto não é uma lista exaustiva):

  • Se você precisa de bloqueios exclusivos, você precisa de um caminho de sistema de arquivos gravável, caso contrário, o flock comando sempre falhará. Isso significa que:
    • Se você não for cuidadoso, um erro do sistema de arquivos pode interromper completamente a execução dos seus trabalhos do cron (se isso fizer com que o caminho usado pelos bloqueios seja remontado somente para leitura).
    • Em alguns dispositivos altamente seguros, talvez seja necessário conceder algumas permissões extras às tarefas agendadas para que elas possam ser executadas.
  • Em alguns casos, você realmente deseja que a nova instância da tarefa cron seja a que continua, não a antiga. O melhor exemplo que posso dar para isso é um trabalho cron de alta frequência que é executado a cada poucos minutos para sincronizar arquivos com outro sistema, onde esperar até que a instância anterior seja concluída pode atrasar as atualizações mais recentes por um tempo arbitrariamente longo. Se, em vez disso, você tiver a tarefa cron matar todas as cópias antigas de si mesmo quando ela for iniciada, você ainda poderá progredir e as alterações recentes provavelmente serão propagadas rapidamente.
Austin Hemmelgarn
fonte