[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