web-dev-qa-db-fra.com

chat: erreur d'écriture: tuyau cassé

Je lance une commande:

cat urls.txt | xargs -L 1 -P 5 timeout 40 wget

Ceci télécharge toutes les URL dans urls.txt

Auparavant, cela fonctionnait bien, mais j'ai récemment changé les URL que je télécharge depuis quelque chose comme: domain.com/54f-5g4/ en quelque chose comme domain.com/this-that/.

Et pour une raison quelconque, je reçois maintenant:

cat: write error: Broken pipe

J'ai regardé les commandes en cours d'exécution et elles ont toutes l'air bonnes, c'est-à-dire aucun caractère non échappé.

Quelqu'un at-il une idée de ce que le problème peut être? Ou comment obtenir plus d'informations de débogage? Je crois que le problème est avec les commandes après le tuyau.

Mise à jour: J'ai trouvé l'erreur. On dirait que j'ai accidentellement tapé un 'dans mon fichier urls.txt. Si vous obtenez cette erreur, vous avez un problème avec votre commande après le canal.

4
Kohjah Breese

Lorsque vous utilisez un tuyau dans un shell:

command_1 | command_2

la sortie de commande_1 est transmise à commande_2 en tant qu'entrée. Si commande_2 se termine avant d'avoir lu tout le résultat de la commande_1 (par exemple, dans votre cas, parce qu'elle a trouvé quelque chose de faux, comme vous l'avez dit dans votre mise à jour, vous avez accidentellement tapé un '), alors command_1 peut se plaindre de la fermeture prématurée de son canal de sortie.

8
Radu Rădeanu