Как создать бесконечный поток строк в 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 с начала файла), когда есть доступный поток. Как это сделать? Может быть, я могу сделать бесконечную трубу струн?

  • 'find -mtime -1 -print | xargs tar 'архивирует все файлы из каталога, игнорируя аргумент -mtime -1
  • Есть ли способ манипулировать порядком аргументов stdin при использовании xargs, так же, как awk как $ 0, $ 1, $ 2 и т. Д.?
  • Правильный синтаксис для использования awk в сочетании с другой командой внутри xargs sh -c
  • xargs git: пропустить ввод пользователя
  • xargs не работает в Linux, поскольку работает в Unix
  • Почему «xargs bash -ic echo» не то же самое, что «xargs echo» или «xargs»?
  • xargs игнорирует второй параметр скрипта
  • Список протоколов файлов и каталогов на du показывает только размеры каталогов?
  • 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 
    Linux и Unix - лучшая ОС в мире.