Odpowiedzi:
W przypadku uruchomionego procesu możesz to zrobić:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Jako ogólną funkcję możesz zmodyfikować monit powłoki. Oto moja definicja zachęty bash:
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:> "
Odpowiednią częścią dla ciebie jest \t
na razie.
Nie rozwiązuje to jednak wszystkich problemów. Nowy monit pokaże, kiedy proces się zakończy, ale poprzedni monit mógł być dość stary, gdy uruchomiono polecenie do pomiaru. Więc albo pamiętasz o odnowieniu monitu przed uruchomieniem długo działających poleceń, albo pamiętasz aktualny czas, kiedy chcesz wiedzieć, ile czasu zajmie bieżący proces.
Aby uzyskać kompletne rozwiązanie, potrzebujesz funkcji audytu (która rejestruje czas rozpoczęcia i zakończenia procesów). Ale może to spowodować ogromną ilość danych, jeśli nie można ograniczyć się do powłoki.