44 votes

empêcher xargs de s'arrêter en cas d'erreur

Selon la page de manuel, xargs s'arrêtera si l'une des lignes d'exécution se termine avec une erreur de 255 :

Si une invocation de la commande se termine avec un statut de 255, xargs s'arrête immédiatement sans lire aucune autre entrée. Un message d'erreur est émis sur stderr lorsque cela se produit.

Comment puis-je faire en sorte que xargs no faire ça ?

J'ai un travail par lots de 1500 lignes environ que je veux exécuter, 50 lignes à la fois. J'ai constaté qu'il mourait toujours à une certaine ligne et qu'il ne terminait pas le travail. Ce n'est pas bon !

Une question encore meilleure, la question qui décrit ce que j'essaie de faire, est :

Comment puis-je exécuter un script batch de 1500 lignes, 50 lignes à la fois, de sorte qu'il ne quitte pas le travail au milieu, et que la sortie soit capturée dans un fichier journal quelconque ?

5voto

Abhinav Points 11

Si vous utilisiez xargs con find utilisez le -exec option de find à la place :

find . -name '*.log' -exec somecommand {} \;

1 votes

Je pourrais l'utiliser, mais l'option -exec ne permet pas de paralléliser les opérations comme le fait xargs.

3 votes

Merci. Je ne savais pas que xargs pourrait exécuter des commandes en parallèle. Cool. Si tu veux seulement minimiser le nombre d'invocations de commandes, -exec a un + paramètre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X