Laut Manpage wird xargs beendet, wenn eine der Ausführungszeilen mit einem Fehler von 255 beendet wird:
Wenn ein Aufruf des Befehls mit dem Status 255 beendet wird, stoppt xargs sofort, ohne weitere Eingaben zu lesen. In diesem Fall wird auf stderr eine Fehlermeldung ausgegeben.
Wie kann ich xargs dazu bringen, dies nicht zu tun?
Ich habe einen Stapeljob mit etwa 1500 Zeilen, den ich gleichzeitig mit 50 Zeilen ausführen möchte. Ich stellte fest, dass es immer an einer bestimmten Linie starb und den Job nicht erledigte. Nicht gut!
Eine noch bessere Frage, die Frage, was ich zu tun versuche, ist:
Wie kann ich ein 1500-Zeilen-Batch-Skript mit jeweils 50 Zeilen ausführen, damit der Job in der Mitte nicht beendet wird und die Ausgabe in einer Protokolldatei erfasst wird?
sh -c
wors für mich!Sie können Ihren xargs-Aufruf schreiben, um die Rückkehrcodes Ihrer Befehlszeilen zu maskieren. Bei so etwas wie dem folgenden
xargs
wird es nie vorkommen, dass Exit-Codes von einem bestimmten Befehl zurückgegeben werden :quelle
Habe gerade eine unterhaltsame Antwort auf diese Frage gefunden, obwohl ihre Nützlichkeit von dem Befehl abhängt, den Sie ausführen möchten.
Wenn Sie xargs verwenden, um im Grunde genommen eine Liste von Befehlen zusammenzustellen, können Sie dieses Verhalten erzielen, indem Sie xargs anweisen, den Befehl zu wiederholen und anschließend an bash weiterzuleiten.
Wenn Sie beispielsweise versuchen, eine Liste von Dingen zu löschen, die möglicherweise vorhanden sind oder nicht:
Dies funktioniert, weil xargs zunächst immer nur Echo aufruft, sodass keine Fehler angezeigt werden. Zweitens, weil Bashs Standardverhalten die Ausführung nach einer fehlgeschlagenen Anweisung fortsetzt.
Um genauer zu sein, ich habe dies verwendet, um eine Reihe alter Anwendungsversionen aus AWS ElasticBeanstalk zu entfernen:
quelle
Folgende Bauarbeiten für mich:
Auch wenn das Upgrade von svn auf einem Element fehlgeschlagen ist, wurde der Vorgang fortgesetzt
quelle
Wenn Sie
xargs
mit verwendenfind
, verwenden Sie stattdessen die-exec
Option vonfind
:quelle
xargs
Befehle parallel ausgeführt werden können. Cool. Wenn Sie nur die Anzahl der Befehlsaufrufe minimieren möchten,-exec
gibt es einen+
Parameter.