Antworten:
Für einen laufenden Prozess können Sie dies tun:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Als allgemeine Funktion können Sie Ihre Shell-Eingabeaufforderung ändern. Dies ist meine Definition der Bash-Eingabeaufforderung:
TERM_RED_START=$'\033[1m\033[31m'
TERM_RED_END=$'\033(B\033[m'
PS1='\nec:$(ec=$?; if [ 0 -eq $ec ];
then printf %-3d $ec;
else echo -n "$TERM_RED_START"; printf %-3d $ec; echo "$TERM_RED_END";
fi) \t \u@\h:\w\nstart cmd:> '
PS2="cont. cmd:> "
Der für Sie relevante Teil ist der \t
für die Zeit.
Dies löst jedoch nicht alle Probleme. Die neue Eingabeaufforderung zeigt an, wann der Vorgang beendet wurde, aber die vorherige Eingabeaufforderung war möglicherweise ziemlich alt, als der zu messende Befehl gestartet wurde. Entweder müssen Sie die Eingabeaufforderung erneuern, bevor Sie Befehle mit langer Laufzeit starten, oder Sie müssen sich die aktuelle Uhrzeit merken, wenn Sie wissen möchten, wie lange der aktuelle Vorgang gedauert hat.
Für eine vollständige Lösung benötigen Sie eine Überwachungsfunktion (die die Start- und Endzeit von Prozessen protokolliert). Dies kann jedoch zu einer großen Datenmenge führen, wenn sie nicht auf die Shell beschränkt werden kann.