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.