cat: ошибка записи: сломанная труба

Я запускаю команду:

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. Если вы получаете эту ошибку, у вас есть проблема с вашей командой после канала.

4
задан 16 February 2014 в 18:35

1 ответ

Когда вы используете канал в оболочке:

command_1 | command_2

вывод команды command_1 передается по команде command_2 в качестве ввода. Если команда command_2 заканчивается перед чтением всех выходных данных команды command_1 (например, в вашем случае, потому что она обнаружила что-то не так, как вы сказали в своем обновлении, что вы случайно набрали '), то command_1 может жаловаться, что ее выходной канал был преждевременно закрыт.

0
ответ дан 16 February 2014 в 18:35

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

Похожие вопросы: