Respostas:
Para um processo em execução, você pode fazer isso:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Como um recurso geral, você pode modificar o prompt do shell. Esta é a minha definição de prompt do 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:> "
A parte relevante para você é a \t
do tempo.
Isso não resolve todos os problemas, no entanto. O novo prompt mostrará quando o processo terminou, mas o prompt anterior pode ter sido bastante antigo quando o comando a ser medido foi iniciado. Portanto, lembre-se de renovar o prompt antes de iniciar comandos de execução longa ou lembre-se do horário atual em que deseja saber quanto tempo o processo atual levará.
Para uma solução completa, você precisa de um recurso de auditoria (que registra o horário de início e término dos processos). Mas isso pode causar uma enorme quantidade de dados, se não puder ser restrito ao shell.