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.
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.