Функциональность, по- REPORTTIME
видимому, трудно закодированы для сравнения usertime+systime
. Соответствующий исходный код zsh для REPORTTIME
функциональности:
#ifdef HAVE_GETRUSAGE reporttime -= j->procs->ti.ru_utime.tv_sec + j->procs->ti.ru_stime.tv_sec; if (j->procs->ti.ru_utime.tv_usec + j->procs->ti.ru_stime.tv_usec >= 1000000) reporttime--; return reporttime <= 0; #else { clktck = get_clktck(); return ((j->procs->ti.ut + j->procs->ti.st) / clktck >= reporttime); } #endif
В качестве альтернативного решения вы можете изменить свой zshrc, чтобы получить функциональность simalar для REPORTTIME
использования общего времени выполнения.
REPORTTIME_TOTAL=5 # Displays the execution time of the last command if set threshold was exceeded cmd_execution_time() { local stop=$((`date "+%s + %N / 1_000_000_000.0"`)) let local "elapsed = $ - $" (( $elapsed > $REPORTTIME_TOTAL )) && print -P "%F$s%f" } # Get the start time of the command preexec() { cmd_start_time=$((`date "+%s + %N / 1.0e9"`)) } # Output total execution precmd() { if (($+cmd_start_time)); then cmd_execution_time fi }
К сожалению, эта команда дает только общее время выполнения. Он не разбивает время выполнения на пользовательское и системное время.