Angenommen, ich führe beispielsweise einen Befehl in einer Shell-Sitzung aus bash -c 'apt-get update && apt-get upgrade'
. 5 Minuten später entscheide ich mich für einen Snack nach draußen und stelle fest, dass ich vergessen habe, einen Benachrichtigungsmechanismus hinzuzufügen, um festzustellen, ob der Ausgang erfolgreich war oder fehlgeschlagen ist.
Nun, was mache ich jetzt? Wenn ich nur von einem anderen Terminal aus den Exit-Status dieses anderen Befehls (oder speziell dieser PID) abfragen könnte, könnte ich vielleicht doch eine Art Popup anzeigen. Die Frage ist also: Wie kann ich den Exit-Status eines bereits laufenden Prozesses von einem anderen Terminal aus abfragen?
Mit anderen Worten,
GEGEBEN, dass ich einen laufenden Prozess in Terminal A habe UND dessen PID bekannt ist
WENN ich einen Befehl in Terminal B ausführe
DANN sollte ich wissen können, ob der Prozess in Terminal A mit dem Exit-Status 0 oder dem Exit-Status> 1 endet.
quelle
wait
den Code eines Hintergrundprozesses in Ihrer aktuellen Shell abrufen, nachdem dieser beendet wurde, aber ich konnte nichts finden, mit dem andere Shells abgefragt werden könnten. Das einfache Überwachen, ob ein Prozess noch ausgeführt wird, und das Auslösen einer Warnung nach dem Beenden ist ebenfalls wieder trivial, ohne jedoch den Beendigungscode herauszufinden. Der einzige Weg, den ich mirPROMPT_COMMAND
vorstellen könnte, wäre die Vorbereitung Ihrer Shell , um den letzten Exit-Code in einem Tempfile oder einem ähnlichen zugänglichen Ort zu speichern. Wäre das eine Option?Antworten:
Verwenden Sie
strace
wie folgt:Weder Systemaufrufe noch Signale sind hier von Interesse, daher empfehlen wir
strace
, sie mit den-e
Ausdrücken zu ignorieren und eine Statusmeldung mit zu unterdrücken-q
.strace
Wird mit PID an den Prozess angehängt$PID
, wartet darauf, dass er normal beendet wird, und gibt seinen Beendigungsstatus wie folgt aus:Ein einfacher
if
Ausdruck zum Aufrufen einer beliebigen Art von Benachrichtigung könnte sein:Beispiellauf
Der größte Teil des Kredits geht an diese Antwort bei U & L. Bitte hinterlassen Sie dort eine positive Bewertung, wenn Sie dies nützlich finden.
quelle