나노초 정밀도로 moreutils의 ts에 파이프를 연결하시겠습니까?

나노초 정밀도로 moreutils의 ts에 파이프를 연결하시겠습니까?

이 시스템에서:

$ cat /etc/issue
Ubuntu 14.04.4 LTS \n \l
$ uname -a
Linux mypc 3.19.0-56-generic #62~14.04.1-Ubuntu SMP Fri Mar 11 11:03:33 UTC 2016 i686 i686 i686 GNU/Linux
$ apt-show-versions -r moreutils
liblist-moreutils-perl:i386/trusty 0.33-1build3 uptodate
moreutils:i386/trusty 0.50 uptodate

...나노초 정밀도를 사용할 수 있습니다 date. 문제 없습니다.

$ date +'%Y%m%d%H%M%S'
20160327133441
$ date +'%Y%m%d%H%M%S%N'
20160327133446582969969

moreutils...하지만 '와 동일한 형식 문자열을 사용하면 ts나노초 정밀도가 실패합니다.

$ ping google.com | ts '%Y%m%d%H%M%S%N'
20160327133829%N PING google.com (216.58.209.110) 56(84) bytes of data.
20160327133829%N 64 bytes from arn06s07-in-f14.1e100.net (216.58.209.110): icmp_seq=1 ttl=54 time=32.0 ms
20160327133830%N 64 bytes from arn06s07-in-f14.1e100.net (216.58.209.110): icmp_seq=2 ttl=54 time=31.6 ms
^C

표준 입력에 타임스탬프를 추가할 때 ts나노초(또는 마이크로초) 정밀도를 표시 할 수 있는 방법이 있습니까?

답변1

지정자는 moreutils 0.31부터 %.S사용할 수 있습니다. %S 대신 이것을 사용하십시오:

ping google.com | ts '%Y%m%d-%H:%M:%.S'
20160327-15:01:11.361885 PING google.com (216.58.209.206) 56(84) bytes of data.
20160327-15:01:11.362056 64 bytes from bud02s22-in-f206.1e100.net (216.58.209.206): icmp_seq=1 ttl=57 time=26.3 ms
20160327-15:01:12.314243 64 bytes from bud02s22-in-f206.1e100.net (216.58.209.206): icmp_seq=2 ttl=57 time=26.2 ms
20160327-15:01:13.315651 64 bytes from bud02s22-in-f206.1e100.net (216.58.209.206): icmp_seq=3 ttl=57 time=26.3 ms

답변2

v0.62부터 %T형식 지정자는 도트 이름이 있는 고해상도 버전에서도 사용할 수 있습니다 %.T.

% ( for i in {1..5}; do date +'%T.%N'; sleep 0.7; done ) | ts '[%F %.T]' 
[2021-04-14 12:31:30.655183] 12:31:30.613979000
[2021-04-14 12:31:31.330801] 12:31:31.329998000
[2021-04-14 12:31:32.046576] 12:31:32.046036000
[2021-04-14 12:31:32.763263] 12:31:32.762500000
[2021-04-14 12:31:33.478184] 12:31:33.477380000

관련 정보