[DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

1. [DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

Antonio Schiavon
aschiavon

(usa elementary OS)

Enviado em 06/03/2013 - 17:25h

Salve galerinha.

Gostaria de saber se alguém conhece alguma forma de executar um determinado script ao salvar qualquer arquivo em determinada pasta, exemplo: tenho a pasta "/home/user/Downloads" ao salvar o arquivo "123.jpg" nessa pasta o sistema automaticamente executa o script "/usr/scripts/script_1.sh".

Obrigado.


  


2. MELHOR RESPOSTA

cr0n
_di0

(usa FreeBSD)

Enviado em 07/03/2013 - 11:19h

Você pode querer usar da interface inotify, mas especificamente do conjunto de ferramentas: inotify-tools.

Nesse conjunto, há o utilitário inotifywait, o qual detecta mudanças em determinados arquivos ou diretórios. Ele simplesmente eficiente, rico em opções que podem ser conferidas em seu manual. Um exemplo elementar para seu caso, seria:


#!/bin/bash

inotifywait -m /diretorioMonitorado/ | while read
do
//tarefa que deseja executar
done


Como mencionei, é um utilitário com muitas opções, como trabalhar como daemon (-d), manipular apenas eventos quando se trata de arquivos criados (-e create), dentre outros.

Não há a necessidade de usar o cron, pode lançar o serviço como daemon, com o sistema.

No sistema Ubuntu o pacote está disponível através do nome inotify-tools.

3. Re: [DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 06/03/2013 - 17:31h

aschiavon escreveu:

Salve galerinha.

Gostaria de saber se alguém conhece alguma forma de executar um determinado script ao salvar qualquer arquivo em determinada pasta, exemplo: tenho a pasta "/home/user/Downloads" ao salvar o arquivo "123.jpg" nessa pasta o sistema automaticamente executa o script "/usr/scripts/script_1.sh".

Obrigado.


O que me vem à mente é o seguinte: um script agendado no cron pra rodar de segundo a segundo, e a primeira linha do script verifica se o tal arquivo existe.


4. Re: [DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

Antonio Schiavon
aschiavon

(usa elementary OS)

Enviado em 07/03/2013 - 09:39h

também pensei nisso, mas não tenho ideia de quanto isso iria requerer da minha máquina, pois não quero q consuma muito recurso, alguem tem ideia de quanto isso iria consumir de perfomance?


5. Re: [DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 07/03/2013 - 11:10h

aschiavon escreveu:

também pensei nisso, mas não tenho ideia de quanto isso iria requerer da minha máquina, pois não quero q consuma muito recurso, alguem tem ideia de quanto isso iria consumir de perfomance?


Depende do tamanho do script. O cron vai chamar o script todo de qualquer maneira, então se for um script de dez linhas não vai pesar tanto quanto um script de, sei lá, 200 linhas.


6. Re: [DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 07/03/2013 - 11:22h

_di0 escreveu:

Você pode querer usar da interface inotify, mas especificamente do conjunto de ferramentas: inotify-tools.

Nesse conjunto, há o utilitário inotifywait, o qual detecta mudanças em determinados arquivos ou diretórios. Ele simplesmente eficiente, rico em opções que podem ser conferidas em seu manual. Um exemplo elementar para seu caso, seria:


#!/bin/bash

inotifywait -m /diretorioMonitorado/ | while read
do
//tarefa que deseja executar
done


Como mencionei, é um utilitário com muitas opções, como trabalhar como daemon (-d), manipular apenas eventos quando se trata de arquivos criados (-e create), dentre outros.

Não há a necessidade de usar o cron, pode lançar o serviço como daemon, com o sistema.

No sistema Ubuntu o pacote está disponível através do nome inotify-tools.


Eu não conhecia o inotify. Tá anotado!


7. Re: [DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

Antonio Schiavon
aschiavon

(usa elementary OS)

Enviado em 07/03/2013 - 16:10h

_di0 escreveu:

Você pode querer usar da interface inotify, mas especificamente do conjunto de ferramentas: inotify-tools.

Nesse conjunto, há o utilitário inotifywait, o qual detecta mudanças em determinados arquivos ou diretórios. Ele simplesmente eficiente, rico em opções que podem ser conferidas em seu manual. Um exemplo elementar para seu caso, seria:


#!/bin/bash

inotifywait -m /diretorioMonitorado/ | while read
do
//tarefa que deseja executar
done


Como mencionei, é um utilitário com muitas opções, como trabalhar como daemon (-d), manipular apenas eventos quando se trata de arquivos criados (-e create), dentre outros.

Não há a necessidade de usar o cron, pode lançar o serviço como daemon, com o sistema.

No sistema Ubuntu o pacote está disponível através do nome inotify-tools.


Booa! Exatamente o que eu procurava, muitíssimo obrigado cara.

Para aqueles que estão curiosos o por que disto, é que eu não gosto de deixar a minha pasta de Downloads bagunçada, então criei um script que move os arquivos para as suas respectivas pastas, caso tenham interesse, meu e-mail é aschiavon91@gmail.com




8. Re: [DUVIDA] Executar comando ao salvar arquivo em determinada pasta [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 07/03/2013 - 19:03h

Posta o script aqui no VOL, tem uma seção pra isso.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts