Избегайте создания нескольких файлов с помощью wget

Я использую wget вызывать ссылку каждые 10 секунд следующим образом:

#/bin/sh
while true; do
    wget http://www.some.random.link/to/some/PHP/script
    sleep 10
done

Это производит пустые файлы с именем script_name.# где # увеличивается при каждом запуске.

Почему это происходит?

2 ответа

Решение

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

Есть несколько вариантов, как это предотвратить.

  1. Запретить загрузку wget вообще, используя --spider опция:
    wget --spider http://www.some.random.link/to/some/PHP/script
    Тем не менее, это может привести к тому, что ваш скрипт не будет работать, так как, IIRC, он только выдает HEAD запрос.
  2. Загрузите вывод, но отмените его, отправив /dev/null:
    wget -O /dev/null http://www.some.random.link/to/some/PHP/script
  3. Загрузите вывод, но удалите, если впоследствии, используя --delete-after опция:
    wget --delete-after http://www.some.random.link/to/some/PHP/script
  4. Для полноты, если вы можете жить с одним файлом, используйте -nc возможность запретить загрузку wget файлов, которые уже существуют локально:
    wget -nc http://www.some.random.link/to/some/PHP/script

В качестве альтернативы вы можете избежать использования wget - который, как следует из его названия, предназначен для получения веб-контента с данного URL. Другими словами, он создан, чтобы быть инструментом "загрузки". (Это, конечно, очень гибко, как продемонстрировал Индрек в своем ответе. Но его настройки по умолчанию работают против ваших целей.)

Поскольку вам не нужно или не нужно ничего скачивать (вы просто получаете доступ к URL, чтобы запустить серверный скрипт), curl Команда немного больше подходит для вашего сценария. По умолчанию результаты его запросов будут записываться в стандартный вывод, а не в файл.

Итак, замена wget с curl в приведенном выше коде следует исправить проблему создания файла без дальнейшей работы.

Другие вопросы по тегам