Как узнать, загружен ли файл wget?

Я использую wget для загрузки файлов (большинство из них – zip-файлы) автоматически для меня в течение ночи.

Однако иногда утром я обнаружил, что несколько файлов нельзя распаковать. Я не знаю, почему это происходит, возможно, что-то не так с удаленным сервером.

Я хочу написать скрипт для периодического тестирования zip-файлов в папке загрузки с помощью «unzip -t», но я не хочу тестировать файлы, которые загружаются. Итак, как я могу определить, используется ли файл wget ?

  • Есть ли команда для перечисления сжатых размеров файлов для файлов в .zip-файле?
  • file-roller: произошла ошибка при загрузке архива (Zip / 7z)
  • Почему tar не может извлекать .zip-файлы?
  • Как де-разархивировать, де-tar -xvf - de-unarchive в беспорядочной папке?
  • Почему параметр -x exclude в zip, по-видимому, не исключает путь?
  • Почтовая папка без указания пути к папке и требует только один аргумент
  • Список файлов из вложенного zip-файла без лишних
  • распаковать каталог в unix
  • 3 Solutions collect form web for “Как узнать, загружен ли файл wget?”

    Вы можете использовать fuser , или lsof .

     fuser foo.zip 

    Результат выглядит так:

     $ fuser archlinux-2013.02.01-dual.iso /home/chris/archlinux-2013.02.01-dual.iso: 22506 $ awk -F'\0' '{ print $1 }' /proc/22506/cmdline wget 

    Измените скрипт загрузки, чтобы загрузить файлы во временное имя или каталог, а затем переместите результат при завершении загрузки. Это более устойчиво, чем попытка обнаружить, что wget все еще работает; в частности, если wget прерван (например, перезагрузкой), вы не рискуете ошибочно принять частичный файл для полной загрузки. Кроме того, обязательно проверьте статус возврата wget. Скорее всего, ваши сломанные файлы на самом деле усекают файлы в результате прерывания загрузки.

     cd incoming && wget http://example.com/foo.zip && mv foo.zip .. 

    Вы можете использовать lsof для проверки того, открыт ли файл какой-либо программой.

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

    или что-то подобное

    Linux и Unix - лучшая ОС в мире.