Bequeme Konsoleninteraktion mit Datums-/Zeitstempel, z. B. durch die Verwendung von Shell-Aliasen?

Bequeme Konsoleninteraktion mit Datums-/Zeitstempel, z. B. durch die Verwendung von Shell-Aliasen?

Daher stelle ich häufig fest, dass ich unbedingt wissen möchte, wann ich einen Prozess (oder ein Skript) gestartet habe, nachdem ich festgestellt habe, dass er ewig dauert. Das heißt, ich konnte in der Befehlszeile kein Datum davor und danach einfügen (ohne etwas zu unterbrechen, von dem ich jetzt weiß, dass es ewig dauert). Und dann kann es sein, dass der Prozess beendet wird, während ich nicht am Terminal bin.

Das brachte mich zum Nachdenken – ist es möglich, Shell-Aliasing so zu verändern, dass standardmäßig vor und nach jeder Befehlszeileneingabe ein „Datum“ aufgerufen wird? Es wäre äußerst praktisch, manchmal im Terminal zurückblättern zu können und ein Gefühl dafür zu bekommen, wie lange die Dinge gedauert haben.

Kennen andere Leute clevere Methoden, um dieses Problem anzugehen? Ich bin sicher, dass dies ein recht häufiges Szenario ist.

Was Lösungen mit diesem Ansatz angeht, vermute ich, dass es ein wenig mit dieser Frage zusammenhängt. Führen Sie eine interaktive Bash-Subshell mit ersten Befehlen aus, ohne sofort zur ("Super-") Shell zurückzukehren

wo klar ist, dass Sie Befehle voranstellen können... aber das ist nur ein Teil der Lösung. Vielleicht wäre es eine ziemlich gute Lösung, Befehle voranzustellen und dann die Shell-Eingabeaufforderung dazu zu bringen, die aktuelle Zeit anzuzeigen?

Gedanken?

Antwort1

Sie können einfach Ihre Shell-Prompt- PS1Variable ändern, um den aktuellen Zeitstempel anzuzeigen. Eine der folgenden Optionen kann verwendet werden:

\t     the current time in 24-hour HH:MM:SS format
\T     the current time in 12-hour HH:MM:SS format
\@     the current time in 12-hour am/pm format
\A     the current time in 24-hour HH:MM format

Diese finden Sie zusammen mit anderen Optionen in man bash. Bearbeiten Sie Ihre .bashrcDatei, um sie PS1nach Wunsch zu ändern.

Sie können dann feststellen, wann ein Befehl ausgeführt wird. Wenn Sie lange untätig bleiben, bevor Sie die Eingabetaste drücken, erhalten Sie natürlich keine genaue Zeit.

Bearbeiten:Eine weitere Möglichkeit besteht darin, mithilfe von tsDienstprogrammen den Fortschritt Ihres Skripts anzuzeigen. Führen Sie Ihr Skript folgendermaßen aus:

$ /path/to/script | ts

Jede Echo-Anweisung wird mit einem Zeitstempel angezeigt.

Antwort2

NOTIZ:Dies ist keine direkte Antwort auf die Frage des OP, kann aber möglicherweise zur Lösung des Problems beitragen.

Bei bereits gestarteten Prozessen können Sie das Startdatum/die Startzeit durch einfaches Abrufen einer abfragen ps ax -F. Die Ausgabe ähnelt der folgenden:

apache 1733 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1734 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1735 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1736 1678 0 83467 7768 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1737 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1738 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd

Wie Sie sehen, wird in der 8. Spalte das Startdatum/die Startzeit angezeigt.

verwandte Informationen