Как создать бесконечный поток строк в bash

У меня около 10 ссылок в файле links.txt. Я загружаю их через

cat links.txt | xargs -i --max-procs=4 bash -c "wget {}" 

Мне бы хотелось сделать это многократно

 while : do cat links.txt | xargs -i --max-procs=4 bash -c "wget {}" done 

Перед следующей итерацией цикла while он ожидает завершения всех подпроцессов. Но я бы хотел продолжить загрузку (взять url с начала файла), когда есть доступный поток. Как это сделать? Может быть, я могу сделать бесконечную трубу струн?

One Solution collect form web for “Как создать бесконечный поток строк в bash”

Если ваше yes принимает строковый аргумент:

 yes links.txt | xargs cat | xargs -n1 --max-procs=4 wget 

Нет смысла запускать один cat perl links.txt или один bash на ссылку (если вы не хотите, чтобы строки links.txt интерпретировались как код оболочки, например http://$host$path или http://evil;rm -rf / ).

Если файл достаточно мал, вы также можете:

 yes -- "$(cat links.txt)" | xargs -n1 -P4 wget 
  • Как проверить версию xargs?
  • Передача нескольких аргументов в середине команды с помощью xargs
  • Отменить все переменные ENV, соответствующие _PROXY
  • Как выполнить xargs grep для вывода grep с пробелами?
  • Как мне получить xargs, чтобы показать мне строки команд, которые он генерирует, не запуская их?
  • GNU parallel vs & (я имею в виду фон) vs xargs -P
  • удалять файлы после вставки в tarball
  • Правильный синтаксис для использования awk в сочетании с другой командой внутри xargs sh -c
  • Как я удаляю все файлы в каталоге с конкретными расширениями, за исключением последних 5 из них
  • Почему «{}» и «%» обычно используются как переменные в xargs?
  • Перенаправление sed для завивки, затем в файл
  • Linux и Unix - лучшая ОС в мире.