Solaris 10의 에포크 이후 초

Solaris 10의 에포크 이후 초

Solaris 10 및 Solaris 11에서 에포크 이후의 초 수를 얻으려고 합니다.

Solaris 11에서 "date +%s"는 bash에서 출력을 제공하지만 Solaris 10에서도 실패합니다.

Solaris 10에서 올바른 명령은 무엇입니까?

답변1

나는 다음을 사용할 것이다 nawk:

nawk "BEGIN{print srand}"

POSIX 셸에서 더 쉬워진 이식성(예: /usr/xpg4/bin/shSolaris 10):

command -p awk 'BEGIN{srand(); print srand()}'

(Solaris 10에서는 /bin/shBourne 쉘이 파생되며 이를 호출하여 /usr/xpg4/bin/awk표준 awk( /bin70년대의 오래된 표준)을 얻거나 고대 유틸리티보다 우선 순위를 갖는 것을 PATH=`getconf PATH`${PATH+:$PATH}포함하여 표준 유틸리티에 대한 작업을 수행할 수 있습니다 . awk/bin/sh이상 고대 쉘이 아니지만 대부분의 다른 도구는 /bin여전히 그렇습니다.)

답변2

perl설치되었다고 가정하면 일반적으로 이 상태로 되돌아갑니다.

perl -e 'print time."\n";'

예를 들어,

$ perl -e 'print time."\n";'
1457531088

설치되었다고 가정하면 perlOS에 구애받지 않을 것입니다.

답변3

Solaris 10과 11 모두 최소 설치가 아닌 한 zsh와 함께 제공되므로(이 경우 bash와 함께 제공되지 않음) 특수 변수에서 현재 에포크 시간으로 전환할 수 있습니다 $EPOCHSECONDS. 모듈이 로드되었습니다 zsh/datetime.

$ zmodload zsh/datetime
$ echo $EPOCHSECONDS
1684393493

이 모듈에는 인간 표현으로 형식을 지정하거나 인간 표현을 다시 에포크 초로 변환할 strftime수 있는 내장 함수 도 함께 제공됩니다 .$EPOCHSECONDS-r

Solaris 11 ksh및 Solaris 10에서는 sh(그래픽 환경을 사용할 수 있는 경우) (이전 버전이기는 하지만) 기반이어야 합니다. 내장 함수는 날짜 형식을 지정하고 구문 분석할 수도 있습니다.ksh93/usr/dt/bin/dtkshksh93ksh93printf

printf '%(%s)T\n' now

초 단위의 에포크 시간을 제공해야 합니다. now일반적인 미국 사람 표현, 일부 ISO 사양 또는 심지어 crontab 시간 사양을 포함한 다른 일반적인 날짜 사양일 수 있습니다.

bash이것의 하위 집합은 4.2(구문 분석 부분이 아닌 형식화 부분만)에서 복사되었으며 $EPOCHSECONDSzsh는 5.0( )에서 복사되었습니다 strftime.

관련 정보