Como saber se um arquivo está sendo baixado pelo wget?

4

Eu uso wget para baixar arquivos (a maioria são arquivos zip) automaticamente para mim durante a noite.

No entanto, às vezes, de manhã, descubro que alguns arquivos não podem ser descompactados. Eu não sei porque isso está acontecendo, talvez seja algo errado com o servidor remoto.

Eu quero escrever um script para testar arquivos zip na minha pasta de downloads periodicamente usando 'unzip -t', mas não quero testar os arquivos que estão sendo baixados. Então, como posso saber se um arquivo está sendo usado por wget ?

    
por David Dai 04.02.2013 / 10:07

3 respostas

1

Você pode usar fuser ou lsof .

fuser foo.zip

A saída é assim:

$ fuser archlinux-2013.02.01-dual.iso 
/home/chris/archlinux-2013.02.01-dual.iso: 22506
$ awk -F'
fuser foo.zip
' '{ print $1 }' /proc/22506/cmdline wget
    
por 04.02.2013 / 10:13
1

Altere o script de download para baixar arquivos para um nome ou diretório temporário e mova o resultado quando o download estiver concluído. Isso é mais robusto do que tentar detectar que o wget ainda está funcionando; em particular, se wget for interrompido (por exemplo, por uma reinicialização), você não arriscará confundir um arquivo parcial com um download completo. Além disso, certifique-se de testar o status de retorno do wget. As chances são de que seus arquivos quebrados são, na verdade, arquivos truncados resultantes de um download interrompido.

cd incoming &&
wget http://example.com/foo.zip &&
mv foo.zip ..
    
por 05.02.2013 / 01:41
0

Você pode usar o lsof para verificar se o arquivo está aberto por algum programa.

for FILE in /path/to/files/*.zip
    do
        if [ -z "$(lsof $FILE)" ]
            then
                unzip $FILE
        fi
done

ou algo semelhante

    
por 04.02.2013 / 10:13

Tags