지난 시간의 unixtime 초를 생성하는 방법이 있는지 궁금합니다. 따라서 타임스탬프는 3600개입니다. 빠른 날짜 명령이 있나요?
답변1
직업인 것 같습니다 seq
.
seq "$(( $(date +%s) - 3599 ))" "$(date +%s)"
또는 "date"가 두 번 실행되어 발생하는 경쟁 조건을 방지하려면 다음을 수행하세요.
NOW=$(date +%s); seq "$(( NOW - 3599 ))" "$NOW"
(3599는 "3600 타임스탬프"를 얻습니다)
답변2
POSIX적으로:
awk '
BEGIN {
srand(); now = srand()
for (i = now - 3599; i <= now; i++) print i
}'
srand()
흥미롭게도 이는 전통적으로 값 없이 호출 될 때 현재 시간이 사용된다는 사실에 기반을 두고 있습니다 . 이는 POSIX에 의해 지정되지만 에포크 초를 사용하라고 명시적으로 언급하지는 않습니다.POSIX에 대한 설명을 요청합니다.아마도 구현에서는 의사 난수 생성기를 시드하기 위해 더 나은 엔트로피 소스를 사용할 수 있지만,그들은 UNIX 시대 시간을 요구하기로 결정했습니다., 따라서 위의 코드는 당분간 작동이 보장되어야 합니다(예외적으로 현재 OpenBSD에서는 작동하지 않습니다 awk
).