[Cascavel-pm] saber se o arquivo está aberto
Flavio Bei
flaviobei em gmail.com
Quinta Agosto 30 16:02:37 PDT 2007
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...
Mais detalhes sobre a lista de discussão Cascavel-pm