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

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

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

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

  • Добавить файл на другой путь в zip-файле
  • Сжатие и удаление исходного каталога с ограниченным хранилищем
  • Настройка исполнения права на весь каталог - это хорошая или плохая идея?
  • Unrar несколько частей
  • Защищенные паролем zip-архивы открываются без пароля
  • Как закрепить отдельные файлы из разных каталогов в одной строке?
  • Как узнать, сколько места займет несжатый почтовый индекс
  • Существуют ли какие-либо утилиты архива, которые могут сохранить атрибут даты, созданный в NTFS-3G?
  • 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 - лучшая ОС в мире.