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

Solli Honorio shonorio em gmail.com
Sexta Agosto 31 19:27:20 PDT 2007


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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070831/377ceb4e/attachment.html 


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