쉘 스크립트의 밀리초 시간

쉘 스크립트의 밀리초 시간

어떻게 누군가가 12:07:59:393(HH:MM:SS:milliseconds)와 같이 전체 시간을 밀리초 단위로 인쇄할 수 있습니까? HHMMSS를 사용하여 밀리초를 인쇄하는 방법을 설명하는 게시물을 많이 찾았지만 실시간 시계를 밀리초 단위로 인쇄하고 싶습니다. 저는 리눅스를 사용하고 있습니다.

답변1

이는 Unix 시대가 시작된 이후 몇 밀리초가 지났는지 알려줍니다.

date +%s%3N

오늘 00:00 이전에 경과된 초 수 *1000을 줄여야 합니다. 또는 다음 공식을 기반으로 모든 것을 밀리초로 변환할 수 있습니다.

date +%H%M%S%3N

좋다:

h=$(date +%H)
m=$(date +%M)
s=$(date +%S)
ms=$(date +%3N)
echo $((10#$h*3600000 + 10#$m*60000 + 10#$s*1000 + 10#$ms))

이 작업을 수행하는 데 평균 4밀리초가 걸리며 아마도 그 시간을 줄이고 싶지 않을 것입니다.

편집: 변수 중 하나에 앞에 0이 있으면 스크립트가 실패합니다. 앞에 오는 0을 제거하기 위해 변수 이름 앞에 10#을 추가하여 08 대신 8을 얻습니다.

답변2

Perl이 충분히 이식 가능한지 확인하십시오.

perl -MTime::HiRes=time -MPOSIX=strftime -e '
    $now = int(time() * 1000);
    printf "%s.%03d\n", strftime("%H:%M:%S", localtime(int($now/1000))), ($now % 1000);
'

시간::고해상도그리고POSIX모두 핵심 Perl 모듈입니다.

소수 초 단위의 에포크 타임스탬프만 원하는 경우:

$ perl -MTime::HiRes=time -le 'print time()'
1462218218.49011

관련 정보