Pro běžící proces můžete provést toto:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Jako obecnou funkci můžete upravit výzvu shellu. Toto je moje definice bash prompt:
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 \[email protected]\h:\w\nstart cmd:> '
PS2="cont. cmd:> "
Relevantní část pro vás je \t
na čas.
To však neřeší všechny problémy. Nová výzva se zobrazí, když proces skončí, ale předchozí výzva mohla být při spuštění příkazu, který se má měřit, poměrně stará. Takže buď nezapomeňte obnovit výzvu před spuštěním dlouhých příkazů, nebo si musíte zapamatovat aktuální čas, kdy chcete vědět, jak dlouho bude aktuální proces trvat.
Pro kompletní řešení potřebujete funkci auditu (která zaznamenává čas začátku a konce procesů). Ale to může způsobit obrovské množství dat, pokud je nelze omezit na shell.
Na základě přijaté odpovědi můžete také průběžně sledovat uplynulý čas běžícího procesu pomocí watch
:
PID=5462
watch command ps -p "$PID" -o etime