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