Reagir aos arquivos recebidos em um diretório no HP-UX

2

Como posso conseguir essa lógica usando um script:

Monitore novos arquivos recebidos em um diretório. Se os arquivos não forem recebidos no diretório por 3 horas ou se o arquivo recebido estiver vazio então faça algo. Nomes de arquivos são gerados dinamicamente.

Como posso colocar isso em um script?

    
por Haadiya 05.11.2014 / 10:16

1 resposta

1

Parece que HP-UX não tem qualquer coisa como FAM / FSEvent / inotify para reagir aos arquivos recebidos. Isso deixa a pesquisa como a única solução.

Aqui está um script de prova de conceito que é acionado a cada minuto e chama o programa process em cada novo arquivo (coloque o que você quiser nesse programa) e, em seguida, move o arquivo para um diretório diferente. Mover o arquivo para um diretório diferente é feito para evitar condições de corrida que levariam a que um arquivo fosse ignorado ou processado várias vezes; Se você realmente precisar que os arquivos permaneçam no mesmo diretório, mantenha uma lista dos arquivos já processados.

#!/usr/bin/env ksh93
last_SECONDS=0
while sleep 60; do
  new_files=$(find INCOMING -exec process {} \; -exec mv {} PROCESSED \; -print)
  if [[ -n $new_files ]]; then
    last_SECONDS=$SECONDS
  elif ((SECONDS - last_SECONDS >= 3600 * 3)); then
    echo "More than 3 hours without a new file"
  fi
done
    
por 07.11.2014 / 06:01