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 | |
![]() |
Buscando arquivos por tamanho
![]() |
Os comentrios so de propriedade de seus respectivos autores. No somos responsveis pelo seu contedo.
|