Ответы:
Для запущенного процесса вы можете сделать это:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
В качестве общей функции вы можете изменить приглашение командной строки. Это моё определение для 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:> "
Важная часть для вас - \t
это время.
Это не решает все проблемы, хотя. Новая подсказка покажет, когда процесс завершится, но прежняя подсказка, возможно, была довольно старой, когда была запущена измеряемая команда. Так что либо вы не забудьте обновить приглашение перед запуском длительных команд, либо вам нужно помнить текущее время, когда вы хотите знать, сколько времени займет текущий процесс.
Для полного решения вам нужна функция аудита (которая регистрирует время начала и окончания процессов). Но это может привести к огромному количеству данных, если они не могут быть ограничены оболочкой.