DATE(1)

명칭
date - 일자와 시각의 표시, 설정

서식
date [-jnu] [-d dst] [-r seconds] [-t minutes_west] [ -v [+|-] val[ymwdHMS]] ... [ -f fmt date | [[[[[cc]yy]mm]dd]HH] MM[.ss]] [+format]

해설
인수없이 실행하면(자), date 유틸리티는 현재의 일자와 시각을 표시합니다. 인수를 주면(자), 일시의 설정, 혹은 유저가 정의한 포맷에 따른 일자나 시각의 표시를 실시합니다.

date 유틸리티는, 커널 클락에서 읽어낸 일자와 시각을 표시합니다. 일자와 시각의 설정에 사용되었을 경우, 커널 클락과 하드웨어 클락의 양쪽 모두가 갱신됩니다.

덧붙여 일자와 시각을 설정할 수 있는 것은 슈퍼 유저 뿐입니다. 시스템의 보안 레벨 ( securelevel(8) (을)를 참조)가 1 보다 큰 경우, 1 초를 넘길 때 각수정은 용서되지 않습니다.

옵션:

-d dst
    서머타임용의 커널치를 설정합니다. 만약 dst 하지만 0 이 아니면, 그 후의 gettimeofday(2) 호출에서는 ‘tz_dsttime’ 에 0 이외의 값이 돌아갑니다.

-f  디폴트의 [[[[yy]mm]dd]HH]MM[.ss] 포맷대신에 fmt (을)를, 시각을 파스 하는 포맷으로서 사용합니다. strptime(3) (을)를 사용해 파스 합니다.

-j  일자의 설정을 실시하지 않습니다. 본플래그를 사용해, -f 플래그를 + 옵션과 함께 이용하는 것으로, 일자의 서식의 변환을 할 수 있습니다.

-n  timed 하지만 동작하고 있는 경우, 디폴트에서는 date 명령에 의해 그룹내의 모든 머신의 시각이 변경됩니다. 그러나, -n 옵션을 지정했을 경우에는, 다른 머신의 시각은 변경하지 않고, 이 머신만으로 시각을 설정합니다.

-r seconds
    기준 시점 (1970 년 1 월 1 일 00:00:00; time(3) 참조) (으)로부터 seconds 초경과한 일시를 표시합니다. 10 진수, 8 진수, 16 진수의 어느 지정도 가능합니다.

-t minutes_west
    커널에 GMT (그리니지 표준시)(으)로부터의 시차를 설정합니다. 이후에 불린다 gettimeofday(2) 그럼, 여기서 지정된 값이 ‘tz_minuteswest’ 에 들어갑니다.

-u  UTC (협정 세계시)의 일자를 표시, 설정합니다.

-v  초, 분, 시, 일, 요일, 달, 해의 어느쪽이든을 val 에 의거해 수정합니다 (즉, 현재의 일자를 취득해, 수정한 결과를 표시합니다. 일자를 설정하는 것은 아닙니다). val 의 전에 플러스 혹은 마이너스가 붙어 있는 경우, 시각은 거기에 따라 전후에 수정됩니다. 그렇지 않은 경우는, 지정한 부분이 설정됩니다. 필요하면 임의개 이 플래그를 지정해 시각을 수정할 수가 있습니다. 플래그는 지정한 순서에 처리됩니다.

    (값을 수정하는 것이 아니라) 값을 지정하는 경우, 초의 범위는 0-59, 분의 범위는 0-59, 때의 범위는 1-12, 날의 범위는 1-31, 요일의 범위는 0-6 (Sun-Sat), 달의 범위는 1-12 (Jan-Dec), 해의 범위는 80-38 혹은 1980-2038 입니다.

    val 하지만 수치의 경우, y, m, w, d, H, M, S 의 어느쪽이든을 사용해, 시각의 어느 부분을 수정하는지를 지정할 필요가 있습니다.

    요일 혹은 달은 수치대신에 이름으로 지정 가능합니다. 이름과 함께 플러스 (혹은 마이너스) 기호를 사용했을 경우, 일자는 적합하는 다음의 (전의) 요일 혹은 달에 진행됩니다 (돌아옵니다). 요일 혹은 달이 현재의 것과 변하지 않는 경우, 날은 수정하지 않습니다.

    특정의 값에 시각을 수정하는 경우나, 단위가 1 시간보다 큰 경우에는, 서머타임의 개념은 무시됩니다. 1 시간 이하의 단위에서의 수정은, 서머타임의 개념을 가집니다. 현재의 시각을 3 월 26 일 0:30 이며, 서머타임의 수정에 의해 01:00 로부터 02:00 에 진행되면(자) 가정했을 경우, -v +1H (은)는 시각을 3 월 26 일 2:30 에 수정합니다. 같이 현재의 시각이 10 월 29 일 0:30 이며, 서머타임의 수정에 의해 02:00 로부터 01:00 에 돌아오면(자) 가정했을 경우, -v +3H (으)로 하면(자) 시각은 10 월 29 일 2:30 이 됩니다.

    존재하지 않는 특정의 값 (예를 들면, 유럽/런던의 타임 존으로 2000 년 3 월 26 일 1:30 BST) 에 시각을 수정하는 경우, 정당한 시각이 될 때까지, 시각은 입다물어 1 시간의 단위로 진행됩니다. 2 회 존재하는 특정의 값 (예를 들면 2000 년 10 월 29 일 1:30) 에 시각을 수정하는 경우, 최종적인 타임 존은, 2 회의 시각의 쳐 빠른 것에 적합하는 것이 됩니다.

    상세하게 관계해서는, 아래와 같은 예를 참조해 주세요.

플러스 (‘+’) 그리고 시작되는 옵션은, 일자와 시각의 표시 방법을 지정한다 포맷 캐릭터 라인입니다. 포맷 캐릭터 라인에는, strftime(3) 그리고 기술되고 있는 것 같은 변환 캐릭터 라인과 임의의 텍스트를 포함할 수가 있습니다. 포맷 캐릭터 라인에 의해 지정된 캐릭터의 뒤에는, 항상 개행 캐릭터 (‘\n’) 하지만 출력됩니다. date 의 디폴트의 표시 형식은,

    ``+%+''

(으)로 한 것 것과 같습니다.

만약, 인수가 ``+''기호로 시작되는 캐릭터 라인이 아니면, 그것은 시스템에 일시를 설정하기 위한 치라고 해석됩니다. 일시를 설정하기 위한 정식적 표현은 이하대로입니다:

cc  세기 (19 또는 20 의 언젠가)이며, 서기의 생략 표현 전을 뒤따릅니다.
yy  서기의 생략 표현입니다. 서기의 10 의 위와 1 의 위입니다 (1989 년이라면 89, 06 이라면 2006).
mm  달의 숫자 표현입니다. 1 에서 12 까지의 숫자입니다.
dd  날입니다. 1 에서 31 까지의 숫자입니다.
HH  때입니다. 0 에서 23 까지의 숫자입니다.
MM  분입니다. 0 에서 59 까지의 숫자입니다.
ss  초입니다. 0 에서 61 까지의 숫자입니다. (59 초 + 2 초까지의 윤초)

분의 지정 이외는 모두 생략 가능합니다.

서머타임과 표준시의 변환이나, 윤초나 윤년의 취급은 자동적으로 행해집니다.

사용예
이하의 명령:

    date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"

(은)는, 아래와 같은 표시를 행합니다.

    DATE: 1987-11-21
    TIME: 13:36:16

유럽/런던의 타임 존에서는, 이하의 명령:

    date -v1m -v+1y

(은)는 이하를 표시합니다:

    Sun Jan  4 04:15:24 GMT 1998

(현재 Mon Aug 4 04:15:24 BST 1997 의 경우).

이하의 명령:

    date -v1d -v3m -v0y -v-1d

(은)는 2000 년 2 월의 마지막 날을 표시합니다:

    Tue Feb 29 03:18:00 GMT 2000

이하의 명령：

    date -v1d -v+1m -v-1d -v-fri

(은)는 이번달 마지막 금요일을 표시합니다:

    Fri Aug 29 04:31:11 BST 1997

(현재 Mon Aug 4 04:31:11 BST 1997 의 경우).

이하의 명령:

    date 8506131627

(은)는, “1985 연 6 월 13 일 오후 4 시 27 분” 에 일시를 설정합니다.

이하의 명령:

    date 1432

(은)는, 날을 수정하는 일 없이, 때만을 오후 2 시 32 분 (으)로 설정합니다.

환경 변수
date 의 실행은 이하의 환경 변수의 영향을 받습니다.

TZ  일시를 표시할 때에 이용되는 타임 존을 설정합니다. 통상의 포맷은 /usr/share/zoneinfo (으)로부터의 상대 패스명입니다. 예를 들면, 명령 “TZ=America/Los_Angeles date” (은)는 캘리포니아의 현재의 시각을 표시합니다. 자세한 것은, environ(7) (을)를 참조해 주세요.

관련 파일
/var/log/wtmp
    일자의 리셋트 및 시각 변경의 기록이 이 파일에 남겨집니다.
/var/log/messages
    일자를 변경한 유저의 기록이 이 파일에 남겨집니다.

관련 항목
gettimeofday(2), strftime(3), strptime(3), utmp(5), timed(8) TSP: The Time Synchronization Protocol for UNIX 4.3BSD, R. Gusella, S. Zatti.

진단
date 유틸리티는, 성공했을 경우는 0 을, 일시를 설정할 수 없었던 경우는 1 을, 로컬 머신의 설정은 할 수 있었지만, 그룹의 머신 전체의 설정에 실패했다 경우는 2 를 돌려줍니다.

timed 가 다수의 머신의 시계를 대면시키는 경우에는, 새로운 시각세트에 몇 초 걸리는 일이 있습니다. 이 때 date (은)는, ‘Network time being set’ (이)라고 표시합니다. date (와)과 timed(8) (와)과의 사이에 통신에 실패했을 경우는, ‘Communication error with timed’ 하지만 표시됩니다.

버그
시스템은 VMS (와)과 높은 호환성을 가지는 포맷으로 일시를 유지하려고 하고 있습니다. 그러나, VMS 하 GMT (은)는 아니게 로컬인 시각을 사용하고 있어 서머타임을 이해하지 않습니다. 그 때문에, UNIX (와)과 VMS (을)를 동시에 사용하는 경우는, VMS (을)를 GMT 그리고 사용해야 하는 것이지요.

표준
date 유틸리티는 p1003.2 호환이라고 상정하고 있습니다.

역사
date 명령은 AT&T UNIX (으)로부터 도입되었습니다.