밀리 초 단위로 시간을 가져 오는 명령
Linux에 시간을 밀리 초 단위로 얻는 쉘 명령이 있습니까?
date +%s%N
초 수 + 현재 나노초를 반환합니다.
따라서 echo $(($(date +%s%N)/1000000))
필요한 것입니다.
전의:
$ echo $(($(date +%s%N)/1000000))
1535546718115
date +%s
유용한 경우 에포크 이후 초 수를 반환합니다.
date +"%T.%N"
현재 시간을 나노초로 반환합니다.06:46:41.431857000
date +"%T.%6N"
처음 6 자리로 반올림 된 나노초 (마이크로 초)로 현재 시간을 반환합니다.06:47:07.183172
date +"%T.%3N"
처음 3 자리 (밀리 초)로 반올림 된 현재 시간을 나노초로 반환합니다.06:47:42.773
일반적으로 date
명령 형식의 모든 필드 에는 선택적 필드 너비가 제공 될 수 있습니다.
나노는 10-9 이고 밀리 10-3 이다. 따라서 우리는 3 초의 나노초 문자를 사용하여 밀리를 얻을 수 있습니다.
date +%s%3N
보낸 사람 man date
:
% N 나노초 (000000000..999999999)
1970-01-01 00:00:00 UTC 이후 % s 초
출처 : 서버 오류 bash를 사용하여 현재 Unix 시간을 밀리 초 단위로 얻으려면 어떻게해야합니까? .
플래그를 date
지원하지 않는 OS X에서는 homebrew%N
를 coreutils
사용하여 설치 하는 것이 좋습니다 . 이를 통해 Linux 시스템에서 와 같이 동작 하는 명령에 액세스 할 수 있습니다.gdate
date
brew install coreutils
보다 "네이티브"경험을 위해 언제든지이 기능을 .bash_aliases
alias date='gdate'
그런 다음 실행
$ date +%s%N
date
명령은 OS X에서 밀리 초를 제공하지 않았으므로 파이썬의 별칭을 사용했습니다.
millis(){ python -c "import time; print(int(time.time()*1000))"; }
또는
alias millis='python -c "import time; print(int(time.time()*1000))"'
다음은 밀리 초 단위의 시간을 확보하기위한 리눅스 용 휴대용 해킹입니다.
#!/bin/sh
read up rest </proc/uptime; t1="${up%.*}${up#*.}"
sleep 3 # your command
read up rest </proc/uptime; t2="${up%.*}${up#*.}"
millisec=$(( 10*(t2-t1) ))
echo $millisec
출력은 다음과 같습니다
3010
이것은 쉘 내부 및 procfs와 함께 작동하는 매우 저렴한 작업입니다.
다른 답변은 대부분의 경우 충분할 수 있지만 busybox 시스템에서 문제가 발생했을 때 2 센트를 추가 할 것이라고 생각했습니다.
문제의 시스템은 지원하지 않은 %N
포맷 옵션을 더 가지고 python
또는 perl
통역을.
많은 머리를 긁은 후에 우리는 (Dave에게 감사드립니다!)
adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }'
출력에서 초와 마이크로 초를 추출하고 adjtimex
(일반적으로 시스템 시계의 옵션을 설정하는 데 사용됨) 새 줄없이 인쇄하므로 서로 붙습니다. 마이크로 초 필드는 0으로 미리 채워 져야하지만 이것은 6 자리보다 긴 초 필드에는 영향을 미치지 않습니다. 이로부터 마이크로 초를 밀리 초로 변환하는 것은 쉽지 않습니다.
후행 줄 바꿈이 필요한 경우 (더 좋게 보이기 때문에) 시도하십시오.
adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }' && printf "\n"
또한이 기능이 필요 adjtimex
하고 awk
사용 가능해야합니다. 그렇지 않은 경우 busybox를 사용하면
ln -s /bin/busybox ./adjtimex
ln -s /bin/busybox ./awk
그런 다음 위와 같이
./adjtimex | ./awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }'
또는 물론 PATH
편집하다:
위는 내 busybox 장치에서 작동했습니다. 우분투에서 나는 같은 것을 시도하고 adjtimex
다른 버전 을 가지고 있음을 깨달았습니다 . 우분투에서 이것은 소수점 이하 자릿수를 마이크로 초 단위로 초 단위로 출력하는 데 효과적이었습니다 (후행 줄 바꿈 포함)
sudo apt-get install adjtimex
adjtimex -p | awk '/raw time:/ { print $6 }'
나는 우분투에서 이것을하지 않을 것입니다. 나는 사용할 것이다date +%s%N
다음과 같은 파이썬 스크립트 :
import time
cur_time = int(time.time()*1000)
@Alper의 답변 에이 물건을 작동시키기 위해해야 할 일을 추가하고 싶었습니다.
Mac에서는을 ( brew install coreutils
를) 사용할 수 있어야 합니다 gdate
. 그렇지 않으면 Linux에서는 그저 date
. 이 기능은 임시 파일이나 다른 것을 만들지 않고도 시간 명령을 내릴 수 있도록 도와줍니다.
function timeit() {
start=`gdate +%s%N`
bash -c $1
end=`gdate +%s%N`
runtime=$(((end-start)/1000000000.0))
echo " seconds"
}
그리고 당신은 문자열과 함께 사용할 수 있습니다 timeit 'tsc --noEmit'
Perl은 AIX와 같은 이국적인 플랫폼에서도 사용할 수 있습니다. 예:
#!/usr/bin/perl -w
use strict;
use Time::HiRes qw(gettimeofday);
my ($t_sec, $usec) = gettimeofday ();
my $msec= int ($usec/1000);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime ($t_sec);
printf "%04d-%02d-%02d %02d:%02d:%02d %03d\n",
1900+$year, 1+$mon, $mday, $hour, $min, $sec, $msec;
참고 URL : https://stackoverflow.com/questions/16548528/command-to-get-time-in-milliseconds
'IT story' 카테고리의 다른 글
TSQL 날짜 시간 필드에서 YYYY-MM-DD 형식으로 날짜를 얻는 방법은 무엇입니까? (0) | 2020.04.05 |
---|---|
정적 초기화 블록 (0) | 2020.04.05 |
MyISAM과 InnoDB의 차이점은 무엇입니까? (0) | 2020.04.05 |
break 문과 continue 문의 차이점 (0) | 2020.04.05 |
그림자가 표시되지 않는 Android“고도” (0) | 2020.04.05 |