Не похоже, что вы могли бы, справочная страница действительно перечисляет ряд опций форматирования, но нет возможности установить точность. Например, кажется, что %e
, %S
и %U
всегда выдают результат с двумя десятичными знаками.
С другой стороны, встроенная функция Bash time
поддерживает установку количества цифр после запятой вплоть до 3, поэтому вы можете использовать ее для получения желаемого. Переменная окружения TIMEFORMAT
управляет форматом вывода :
.
$ TIMEFORMAT='real: %3R user: %3U sys: %3S cpu: %P' bash -c 'time sleep 1.233'
real: 1.234 user: 0.000 sys: 0.000 cpu: 0.00
Или просто без установки TIMEFORMAT
, так как вывод по умолчанию также показывает три цифры. Однако он разделяет минуты:
$ bash -c 'time sleep 1.233'
real 0m1.234s
user 0m0.000s
sys 0m0.000s
Системный вызовgetrusage()
дает время как struct timeval
, то есть с точностью до микросекунд, поэтому я полагаю, что вы могли бы сделать свою собственную реализацию time
для большей точности. Другое дело, насколько точны цифры.
date
является частью GNU coreutils , доступен во всех системах Linux, часто используется в сценариях.
timedatectl
является частью systemd .
Эти два инструмента используются для установки/отображения времени и даты.
см. :info date
,man timedatectl
date
— старый инструмент UNIX, timedatectl
— новый инструмент создателей systemd, поэтому он доступен только в дистрибутивах с systemd
.
Используйте все, что вам нравится, когда это возможно.