Protokollieren Sie alle Befehle, die „time“ ähneln

Protokollieren Sie alle Befehle, die „time“ ähneln

Mit dem time(1)Befehl können Sie die Zeit für jeden Befehl festlegen, indem Sie ihn als Argumente an übergeben time.

stderrIch weiß, dass es möglich ist, und stdoutüber in eine Datei umzuleiten 2>&1, und es gibt auch tee(1), mit dem man seine Eingabe sowohl auf den Bildschirm als auch in eine Datei kopieren kann. Ich weiß jedoch nicht, wie man Zeitstempel zu Protokollen hinzufügt.

Gibt es ein Tool zum Umleiten stderrund Zuweisen stdoutzu einer Datei UND zum Anhängen von Zeitstempeln zu Protokollierungszwecken?

Antwort1

Sie könnten es ts(1)von moreutils verwenden.


tsausmehrutilsfügt jeder Eingabezeile einen Zeitstempel voran. Sie können es auch mit strftime formatieren.

$ echo 'foo bar baz' | ts
Mar 21 18:07:28 foo bar baz
$ echo 'blah blah blah' | ts '%F %T'
2012-03-21 18:07:30 blah blah blah
$ 

So installieren Sie es:

sudo apt-get install moreutils

Aus dieser Antwort kopierter Inhalt:https://stackoverflow.com/a/9813614/221689

Antwort2

Versuchen Sie es annotate-outputmit DebianEntwicklerskriptePaket. Es zeigt Zeitstempel an und schreibt "O" vor die Standardausgabe und "E" vor die Standardfehlerausgabe. Beispiel:

# run `ls` on one file that exists, and one that doesn't...
annotate-output ls /bin/bash /tmp/boosh

Ausgabe:

03:30:52 I: Started ls /bin/bash /tmp/boosh
03:30:52 O: /bin/bash
03:30:52 E: ls: cannot access '/tmp/boosh': No such file or directory
03:30:52 I: Finished with exitcode 2

verwandte Informationen