Избегайте создания нескольких файлов с помощью 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 загружает вывод вашего скрипта (который, по-видимому, пуст) и сохраняет его в файл, каждый раз добавляя число, чтобы не перезаписывать ранее загруженный файл.
Есть несколько вариантов, как это предотвратить.
- Запретить загрузку wget вообще, используя
--spider
опция:wget --spider http://www.some.random.link/to/some/PHP/script
Тем не менее, это может привести к тому, что ваш скрипт не будет работать, так как, IIRC, он только выдаетHEAD
запрос. - Загрузите вывод, но отмените его, отправив
/dev/null
:wget -O /dev/null http://www.some.random.link/to/some/PHP/script
- Загрузите вывод, но удалите, если впоследствии, используя
--delete-after
опция:wget --delete-after http://www.some.random.link/to/some/PHP/script
- Для полноты, если вы можете жить с одним файлом, используйте
-nc
возможность запретить загрузку wget файлов, которые уже существуют локально:wget -nc http://www.some.random.link/to/some/PHP/script
В качестве альтернативы вы можете избежать использования wget
- который, как следует из его названия, предназначен для получения веб-контента с данного URL. Другими словами, он создан, чтобы быть инструментом "загрузки". (Это, конечно, очень гибко, как продемонстрировал Индрек в своем ответе. Но его настройки по умолчанию работают против ваших целей.)
Поскольку вам не нужно или не нужно ничего скачивать (вы просто получаете доступ к URL, чтобы запустить серверный скрипт), curl
Команда немного больше подходит для вашего сценария. По умолчанию результаты его запросов будут записываться в стандартный вывод, а не в файл.
Итак, замена wget
с curl
в приведенном выше коде следует исправить проблему создания файла без дальнейшей работы.