Como faço para acionar um script quando uma pasta é atualizada no Solaris 5.10?

2

Estamos tentando escrever um script para remover arquivos assim que eles forem soltos em uma pasta. Uma maneira de conseguir isso é executar o rsync em um script no cron scheduler.

O problema com essa abordagem é a sobrecarga do sistema. Não podemos executá-lo a cada segundo e, se o executarmos após um intervalo de tempo, deixaremos os arquivos vulneráveis (acessíveis aos remetentes) para esse intervalo de tempo. Reqirement é que os arquivos devem desaparecer assim que chegarem.

Eu verifiquei stackoverflow e encontrei o incron . Mas isso só está disponível no Linux e não no Solaris.

    
por vikkp 30.10.2013 / 21:33

2 respostas

1
  • Com o Solaris 10, você pode tentar o Gamin que tem uma porta Solaris aqui .

  • Com o Solaris 11 e mais recente, existe a FEN (notificação de evento de arquivo) mais nativa e eficiente. ).

Se, por algum motivo, a natureza de pesquisa do Gamin não atender às suas necessidades e você quiser permanecer no Solaris 10, existem pelo menos algumas maneiras alternativas que podem ser exploradas:

  • ativar a auditoria do BSM e rastrear o evento fc (criação de arquivo).
  • usando o Dtrace para reagir quando um arquivo é criado no diretório a ser monitorado.

No último caso, você pode até mesmo mover os arquivos de destino para fora do diretório no próprio script dtrace.

    
por 30.10.2013 / 22:20
0

Eu sei que você declara explicitamente o Solaris 10, mas se você estivesse no Solaris 11 você poderia usar o watchdir com base na notificação de eventos do arquivo Solaris. Desse modo, você obtém perto de 0% de sobrecarga do sistema, em oposição a qualquer outra solução que seja inerentemente baseada em algum tipo de pesquisa. Este comando é um comando de bloqueio que irá esperar para sempre (ou usando um argumento com um tempo limite) para que um evento de arquivo aconteça em uma pasta. Normalmente, ele será usado para aguardar a chegada de um novo arquivo.

Se você realmente insistir no Solaris 10, então eu não conheço nenhum método que não seja baseado em pesquisas.

Também pode ser interessante notar que o Java a partir da v7 tem um mecanismo integrado para assistir o sistema de arquivos . A beleza dessa solução é que ela aproveita automaticamente o método mais eficiente para a plataforma em questão. Em outras palavras, seu aplicativo funcionará hoje no Solaris 10 (presumivelmente pelo Java usando algum tipo de mecanismo de polling abaixo) e, quando você migrar para o Solaris 11, esse mesmo aplicativo aproveitará o mecanismo de Notificação de Eventos de Arquivos do Solaris.

    
por 02.11.2013 / 11:53