Эпоха Unix в миллисекундах

/sys каталог называют sysfs. Можно узнать об этом:

5
13.04.2017, 15:13
3 ответа

Вы можете использовать bc и printf :

printf "%0.f" "$(bc <<<"$(date +"%s.%N")*1000")"

Это дает количество миллисекунд с января 1970 года. Я специально не использовал опцию scale = n в bc , потому что это не округляет значение, а убирает все остальное (я знаю, это педантично). bc читает из файла или со стандартного ввода. <<< - это здесь строка , которая расширяет содержимое и предоставляет его в качестве стандартного ввода для bc . Он передается в printf для округления значения.


Рассмотрите это как пример:

$ d=$(date "+%s.%N")
$ echo $d; bc <<<"scale=0; ($d*1000)/1"; printf "%0.f" "$(bc <<<"$d*1000")"
1445423229.512731661 # plain date
1445423229512 # bc with scale
1445423229513 # bc/printf

Тогда в цикле это будет выглядеть так:

command | while read line; do
  d=$(printf "%0.f" "$(bc <<<"$(date +"%s.%N")*1000")")
  echo "$d $line"
done >file
6
27.01.2020, 20:35

Вы почти все сделали правильно, всего пара обратных тиков слишком много

$ d=$(($(date +%s%N)/1000000))
$ echo $d
1445422618527
$ d=$(date +%s%N)
$ echo $d $(( d / 10 )) $(( d / 1000000 ))
1445422673712321597 144542267371232159 1445422673712
2
27.01.2020, 20:35

нано равно 10 -9 и милли 10 -3 . Следовательно, мы можем использовать 3 первых символа наносекунды для получения милли:

date +%s%3N

From man date :

% N наносекунд (000000000..999999999)

% s секунд с 1970-01-01 00:00:00 UTC

Источник: Ошибка сервера Как мне получить текущее время Unix в миллисекундах с помощью bash? . Обратите внимание, что я разместил этот же ответ в вопросе Stack Overflow Linux, чтобы получить время в миллисекундах .

1
27.01.2020, 20:35

Теги

Похожие вопросы