Anderson Jacson </a>  
Login

Menu

5 visitantes online (1 na seo: Artigos e Dicas)

Usurios: 0
Visitantes: 5

mais...

SmartSection is developed by The SmartFactory (http://www.smartfactory.ca), a division of INBOX Solutions (http://inboxinternational.com)
Linux >
Publicado por Anderson em 26/12/2012 (1085 leituras)

Aguardando término de escrita em Arquivo via Shell

 

Muitas vezes nos deparamos com cenários onde ao transferirmos arquivos de uma origem para um destino, um processo é disparado antes de que o arquivo seja definitivamente transferido. Neste caso, o processo lê um arquivo incompleto e o processo fica quebrado. E o pior que para se descobrir que o real motivo é este, desperdiçamos muito tempo com análises que poderiam ser facilmente evitadas com o uso deste script a seguir.

O script é muito simples, você define que arquivo será analisado e o mesmo dispara um processo de loop verificando o tamanho real a cada 5 segundos… A cada volta no laço, caso o tamanho não tenha alcançado o tamanho total do arquivo, uma outra volta no laço é realizada incrementando a variável até que o tamanho total seja alcançado.


# VERIFICANDO SE ARQUIVO TERMINOU DE SER TRANSFERIDO PARA RENOMEA-LO
file_i=$caminho/$arquivo
prev_size=-1 # initialize variable
new_size=`/usr/bin/du -sk “$file_i” | awk ‘{print $1}’` # get current file size

while [ $prev_size != $new_size ] # repeat until these values are the same
do
/bin/sleep 5 # check every 5 seconds
tmp_size=$new_size # move to intermediate value
new_size=`/usr/bin/du -sk “$file_i” | awk ‘{print $1}’` # get new file size
prev_size=$tmp_size
done

Have fun.


Navegue pelos artigos
Artigo prvio Detectando conflitos de IP Buscando arquivos por tamanho Prximo artigo
Os comentrios so de propriedade de seus respectivos autores. No somos responsveis pelo seu contedo.
Pesquisa