[Cascavel-pm] saber se o arquivo está aberto

Marco A P D'Andrade mdacwb em gmail.com
Domingo Setembro 2 09:53:56 PDT 2007


Sei que estou um tanto atrasado na questão, mas seguem minhas considerações:

Vc poderia ter controle no tempo de execução do robo ? Algo do genero
ao término fazer um rotate? (isto é solicitavel a quem controla?)

Estes diretórios, são acessados somente por este robo e o seu script,
ou por outros processos ?
- Se for somente os 2, vc poderia utilizar um "fuser", para ver se
algum processo está lendo o arquivo diretorio ... para algo mais
elaborado, vc poderia até ver o código do fuser (nao aconselho, mas
viajando demais ;) )
** Nem tanto... ao termino fui buscar em nosso "dicionario" :)
  http://search.cpan.org/~jstowe/Linux-Fuser-1.4/lib/Linux/Fuser.pm


Os arquivos alterados são sempre os mesmos ? Ou existe algum mecanismo
para renomear os arquivos anteriores (do genero date yyyymmddhhss, pid
ou .old)  ?
- Se houver, melhor, se não, poderia pedir ?

Vc sabe de quanto em quanto tempo os arquivos são reescritos ? Quanto
tempo leva ?
- Outra abordagem poderia ser o "stat", verificando a ultima
alteração, e se for acima do esperado pelo processo, vc poderia
iniciar o uso. - eventualmente utilizando também o "fuser".

Vc comentou sobre "trailer", indicado no final...
- Esta seria uma abordagem que lhe garantiria consistencia, se não
estiver marcado como concluido, vc aguarda ;)


Agora uma coisa que eu utilizo como pratica preservacionista em meu trabalho...

Perl faz mágica, mas eu não. Me digam como controlar a situação (e
assumam o risco), e depois não venha me dizer que "Perl não é bom para
este problema", pois se não for bem elaborada a solução, vc com
certeza ouvirá isto ;)


PS: Gastarei mais um paragrafo para pedir desculpas pelo comprimento
de meu email eheheh


Sds,
Marco Antonio

Em 31/08/07, Solli Honorio<shonorio em gmail.com> escreveu:
> Cara, eu acho que você pode utilizar também o Linux::Inotify2. Este link
> (http://peter.makholm.net/2007/08/21/on-handling-email/ )
> possue um exemplo interessante.
>
> Abaixo tem um código meu mais simples ....
>
> <code>
> #!/usr/bin/perl
> use Linux::Inotify2;
>
> my $inotify = new Linux::Inotify2
>      or die "Unable to create new inotify object: $!";
>
> $inotify->watch('/tmp/t.txt', IN_ALL_EVENTS)
>      or die "Watch creation failed: $!" ; # Take a look at the directory for
> file changes
>
> while () { # Loop forever
>     my @events = $inotify->read;
>     $e = shift(@events);
>     my $name = $e->fullname;
>     print "$name was accessed\n" if $e->IN_ACCESS;
>     print "$name is no longer mounted\n" if $e->IN_UNMOUNT;
>     print "$name is gone\n" if $e->IN_IGNORED;
>     print "$name is close from write\n" if $e->IN_CLOSE_WRITE;
>     print "$name is opened\n" if $e->IN_OPEN;
>     print "events for $name have been lost\n" if $e->IN_Q_OVERFLOW;
> }
> </code>
>
> On 8/31/07, Flavio Bei <flaviobei em gmail.com > wrote:
> > opa Ednardo, blz?
> > eu não posso renomear ele antes de terminar, pois o processo pra
> > renomear vai ser executado junto com uma mudança dop local do arquivo,
> > para ele ser processado por outro programa..
> > sei que parece uma zona, mas é um esquema que já funcionava aqui.,...
> > mas era manual..
> >
> > e hoje apareceu mais uma novidade, esse arquivo vai estar em uso por
> > um ftp, então preciso esperar o ftp acabar pra mecher nele...
> >
> > to tentando o fuser, mas não ta resultando nada útil...
> >
> > abraços
> >
> > Em 30/08/07, Luciano Giordani Bassani< lgbassani em terra.com.br> escreveu:
> > > Eu não sabia deste pc -C <nome_prog>, mas aqui funcionou.
> > > Em todo caso, se tu quiser mesmo utilizar o esquema com o grep, eu
> recomendo
> > > tu mudar para algo assim:
> > > $teste = (`ps xa | grep $retorno\$ | grep -v grep`);
> > >
> > > Isso é para evitar que o próprio comando "ps xa | grep" gere um
> > > "falso-positivo".
> > >
> > >
> > > SDS,
> > >
> > > Luciano
> > >
> > >
> > >
> > > Fernando Oliveira escreveu:
> > > pq, ao invez de usar 2 comando,  não usa só o ps -C nome_prog???
> > >
> > > Em 30/08/07, Flavio Bei < flaviobei em gmail.com > escreveu:
> > > > consegui uma solução assim, deu certo, mas to com dúvidas... será que
> > > > o resultado será sempre preciso?
> > > >
> > > > o código ficou + - assim
> > > >
> > > > ##########################################
> > > > #!/usr/bin/perl
> > > > # sistema que vai buscar em um diretório um determinado arquivo
> > > > # caso o arquivo não esteja em uso por nenhum processo ele é renomeado
> > > > ##########################################
> > > >
> > > > use strict;
> > > > my $caminho = "/home/user/pasta/";
> > > > my $extensao = "*.txt";
> > > > my $completo = $caminho.$extensao;
> > > > my @encontrados;
> > > > my $retorno;
> > > > my $lista;
> > > > my $teste;
> > > >
> > > > $lista = (`ls -1 $completo`);
> > > >
> > > > if ($lista ne '')
> > > > {
> > > > @encontrados = split('\n', $lista);
> > > > }
> > > >
> > > > foreach $retorno (@encontrados) {
> > > >
> > > > $teste = (`ps xa |grep $retorno\$`);
> > > >
> > > >         if ($teste eq '')
> > > >         {
> > > >         #processa o arquivo pois ele não está em uso por nenhum
> processo
> > > >         print ("=======>>> Altera o arquivo $retorno pois não está em
> > > uso\n");
> > > >         `mv $retorno $retorno.new`;
> > > >         }
> > > >         else
> > > >         {
> > > >         #não processa o arquivo pois ele está em uso por algum
> processo
> > > >         print ("========>!!!! Não altera o arquivo $retorno\n");
> > > >         }
> > > > }
> > > > ##############################################
> > > > deu certo, e está rodando de boa, dai joguei na cron e ele fica
> > > > verificando de tempos em tempos... mas não sei se é a sintaxe do ps,
> > > > que tem hora que ele não mostra o  processo sendo executado por outro
> > > > usuário, tem hora que mostra normal...
> > > > _______________________________________________
> > > > Cascavel-pm mailing list
> > > > Cascavel-pm em pm.org
> > > > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > > >
> > >
> > >
> > >
> > > --
> > > []'s Fernando ________________________________
> > >
> > _______________________________________________
> > Cascavel-pm
> > > mailing
> > > list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > >
> > > _______________________________________________
> > > Cascavel-pm mailing list
> > > Cascavel-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > >
> >
> >
> > --
> > --
> > Flávio Bei
> > Webdesigner
> > (11) 8964 5315
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
>
>
>
> --
> "o animal satisfeito dorme". - Guimarães Rosa
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


Mais detalhes sobre a lista de discussão Cascavel-pm