Я запускаю команду:
cat urls.txt | xargs -L 1 -P 5 timeout 40 wget
Это загружает все URL-адреса в urls.txt
Раньше это работало нормально, но недавно я изменил URL-адреса, с которых я загружаю что-то вроде: domain.com/54f-5g4/ на что-то вроде domain.com/this-that/
И по какой-то причине я сейчас получаю:
cat: write error: Broken pipe
Я посмотрел на выполняемые команды, и все они выглядят хорошо, то есть без символов экранирования.
Кто-нибудь знает, в чем может быть проблема? Или как получить больше отладочной информации? Я считаю, что проблема с командами после канала.
Обновление : Я нашел ошибку. Похоже, я случайно набрал 'в моем файле urls.txt. Если вы получаете эту ошибку, у вас есть проблема с вашей командой после канала.
Когда вы используете канал в оболочке:
command_1 | command_2
вывод команды command_1 передается по команде command_2 в качестве ввода. Если команда command_2 заканчивается перед чтением всех выходных данных команды command_1 (например, в вашем случае, потому что она обнаружила что-то не так, как вы сказали в своем обновлении, что вы случайно набрали '
), то command_1 может жаловаться, что ее выходной канал был преждевременно закрыт.