Ich habe einen einfachen Bash - Skript , das eine Reihe von Kontrollen läuft ( ping
, nslookup
usw.) und sendet dann einen E - Mail - Bericht mit dem Ausgang dieser Daten.
Ich möchte, dass die E-Mail Informationen darüber enthält, wie lange die Ausführung des gesamten Skripts gedauert hat. Gibt es eine einfache Möglichkeit, diese Informationen zu sammeln?
quelle
$SECONDS
; das ist großartig! Um dies hinzuzufügen, können Sie Sekunden in Stunden: Minuten: Sekunden mit so etwas wie konvertierendate -d "1970-01-01 ${SECONDS} sec" +'%k:%M:%S'
(sieheman date
weitere Formatierungsoptionen).SECONDS=0
ein Skript und dasselbe in einem anderen Skript einstelle, stören sie sich dann gegenseitig?START_TIME=$SECONDS; dosomething; ELAPSED_TIME=$(($SECONDS - $START_TIME))
. Dies scheint bei gleichzeitiger Verwendung etwas flexibler zu sein.Stellen Sie Ihrem Befehl ein Präfix voran,
/usr/bin/time
und der Befehl time gibt die Zeit aus, die das Skript zum Ausführen benötigt hat. Dies ist portabler als die Verwendung von etwasbash
Bestimmtem.quelle
Während der Verwendung von
SECONDS
und erhaltentime
Sie relative Werte. Wenn Sie absolute Werte für Prüfungs- und Berichtszwecke haben möchten, wann das Skript ausgeführt und wann es abgeschlossen wurde, sollten Sie vor und nach Ihren Befehlen Folgendes ausprobierendate '+%Y%m%d%H%M%S.%N'
. Dies könnte Ihnen auch eine bessere Granularität geben, da es Unterschiede von weniger alsping
einer Sekunde erfassen kann, da Sie Befehle haben, die normalerweise innerhalb einer Sekunde ausgeführt werden.quelle
Verschachteln Sie Ihr Skript. Um eine E-Mail zu senden, gibt es eine Reihe von Optionen. Ich persönlich bevorzuge msmtp, Sie können die Header selbst "hier" (inline) definieren oder eine separate Datei verwenden und sie zusammenfassen. Es gibt alle möglichen Alternativen dazu, einschließlich Perl, Python usw.
Die nachfolgende Leerzeile ist wichtig. katzen Sie Ihre zusammengestellte Nachricht in msmtp so:
Ein Pessimist würde eine vernünftige Anzahl von Schleifen bis zum Erfolg durchlaufen.
Die Nutzdaten könnten auch HTML sein und PHP-generiert werden.
Eine sehr hässliche Alternative für "Batchy" -Operationen über Nacht besteht darin, einen Cronjob zu erstellen, und die Ausgabe wird anstelle von stdout / stderr per E-Mail gesendet.
quelle