Executa script quando o arquivo é criado [duplicado]

2

Como executo um script quando um arquivo é criado em um determinado diretório?

Estou usando um IDE para escrever um programa que é executado em um computador diferente. Toda vez que o programa é compilado, ele é copiado no outro computador para / tmp / myFile. O script configura e executa o programa, mas eu tenho que executá-lo manualmente, a menos que ele escute a criação do arquivo.

    
por Navin 09.02.2013 / 20:46

2 respostas

3

Você pode usar o incron (inotify cron).

A mesma ideia de cron , exceto que, em vez de ser baseada em tempo, você define um incrontab que especifica qual comando será executado em um determinado evento no sistema de arquivos.

O incrontab no seu caso seria:

/tmp IN_CLOSE_WRITE /path/to/someCommand $#

E someCommand seria chamado sempre que um arquivo fosse escrito e fechado com o nome do arquivo como argumento (e someCommand precisaria verificar se foi passado um arquivo chamado myFile ).

Uma nota de aviso embora. /tmp é mundialmente gravável, então qualquer um e qualquer coisa pode escrever arquivos lá e também criar links simbólicos lá. Portanto, pode-se sobrescrever qualquer arquivo no qual você tenha acesso de gravação quando transferir esse myFile (usando um link simbólico), ou poderá executar outro comando diferente daquele que você espera (como um trojan). Seria mais sensato colocar o arquivo em um diretório onde apenas você tenha acesso de gravação.

    
por 09.02.2013 / 21:09
0

Você pode colocar o mesmo script em cron :

while true; do
   modification_time='stat --printf=%y /tmp/mydir'
   if [ "$modification_time" != "'stat --printf=%y /tmp/mydir'" ]; then
      echo YOUR DIR CHANGED
   fi;
done;

Eu testei o trabalho. Você pode apenas alterar echo line .

    
por 09.02.2013 / 22:23

Tags