Linux : 명령 행을 통해 날짜 설정


76

리눅스에서 시스템 날짜를 변경하는 방법?

나는 바꾸고 싶다:

  • 년만
  • 달만
  • 날짜 만
  • 위의 세 가지 조합

2
date --set='-2 years'를 들어 시계를 2 년 뒤로 설정하여 다른 모든 요소를 ​​동일하게 유지할 수 있습니다 . 월과 일을 같은 방식으로 변경할 수 있습니다. 예를 들어 DST 전환 중에 실제로 존재하지 않는 날짜 시간이 계산 결과로 발생하는 경우 어떻게되는지 확인하지 않았지만 동작은 일반적인 "날짜와 시간을 구체적인 값으로 설정"동작과 동일해야합니다.
Christian Severin

날짜를 현재 시간으로 설정하려고한다고 가정하면 sudo ntpd -gqntp 서비스를 사용하여 시스템을 자동으로 업데이트 할 수 있습니다.
Steven Soroka

답변:


95

사용 date -s:

date -s '2014-12-25 12:34:56'

루트 또는로 실행하십시오 sudo. 년 / 월 / 일 중 하나만 변경하는 것은 어려운 일이며 현재 날짜의 비트를 반복해야합니다. 주요 데스크탑 환경에 내장 된 GUI 날짜 도구도 있으며 일반적으로 시계를 통해 액세스합니다.

시간의 일부만 변경하려면 날짜 문자열에서 명령 대체를 사용할 수 있습니다.

date -s "2014-12-25 $(date +%H:%M:%S)"

날짜는 변경되지만 시간은 유지됩니다. 참조 man date개별 구성 요소는 다음과 같습니다 다른 조합을 구성 세부 사항을 서식에 대한 %Y, %m, %d, %H, %M,와 %S.


시간을 바꾸고 싶지 않습니다
SHW

5
그렇게 할 수있는 옵션이 없습니다. date -s "2014-12-25 $(date +%H:%M:%S)"그러나 날짜를 변경하고 현재 시간을 재사용하는 데 사용할 수 있습니다 .
Michael Homer

여기에 왔고 몇 분뿐만 아니라 시간도 현재 시간과 일치했습니다. – 좋은
Alex2php

2
date: cannot set date: Invalid argument
Chris Stryczynski

@MichaelHomer @SHW와 같은 명령으로 날짜 만 변경할 수 date -s 2018-01-01있습니다. 누군가가 이것을 답변으로 공유했습니다 : superuser.com/questions/870068/…
baptx

42

시스템 시간

date시스템 날짜를 설정하는 데 사용할 수 있습니다 . date(비 임베디드 리눅스 기반 시스템에서 볼 수 있는) GNU 구현은 시간을 설정하기 위해 여러 가지 형식을 허용합니다. 여기 몇 가지 예가 있습니다 :

연도 만 설정 :

date -s 'next year'
date -s 'last year'

월만 설정하십시오.

date -s 'last month'
date -s 'next month'

하루 만 설정하십시오.

date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'

모두 함께 설정하십시오.

date -s '2009-02-13 11:31:30' #that's a magical timestamp

하드웨어 시간

이제 시스템 시간이 설정되었지만 하드웨어 시계와 동기화 할 수 있습니다.

--show하드웨어 시간을 인쇄하는 데 사용하십시오 .

hwclock --show

하드웨어 시계를 현재 시스템 시간으로 설정할 수 있습니다.

hwclock --systohc

또는 하드웨어 시계의 시스템 시간

hwclock --hctosys

2
예제를 사용하여 날짜를 설정할 수있는 명백한 방법을 설명하고 "시스템 시간"과 "하드웨어 시계"의 차이점을 알려주는 보너스 포인트. 매우 유용한 답변!
Mark Edington

3

date명령으로 날짜를 변경합니다 . 그러나 명령은 전체 날짜를 인수로 예상합니다.

# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014

날짜의 일부를 변경하려면 현재 날짜를 문자열로 변경하려는 날짜 부분과 날짜 형식 변수로 다른 모든 날짜를 출력하십시오. 그런 다음 date -s명령에 전달 하여 설정하십시오.

# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014

월을 12 월-12 월로 변경합니다.

날짜 형식은 다음과 같습니다.

  • %Y -년도
  • %m -달
  • %d - 일
  • %H - 시
  • %M - 분

변경하려고하지만 변경되지 않습니다 :-$ sudo date --set = "2015-09-30 10 : 05 : 59.990"수 9 월 30 일 10:05:59 +0530 2015 $ 날짜 목요일 5 월 23 일 15:10:37 +0530 2019
Vinod

2

ESXI 5.1을 실행하는 저와 같은 분들을 위해 다음과 같이 시스템이 대답했습니다.

~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'

대신 특정 ESX 명령을 사용해야했습니다.

esxcli system time set  -y 2016 -M 03 -d 23  -H 10 -m 05 -s 00

3
-1 주셔서 감사하지만 이유를 설명해 주 시겠습니까? 더 나은 / 완전한 /보다 정확한 답변을 얻은 경우 자유롭게 의견을 보내십시오.
Balmipour

1

시스템 날짜를 변경하는 명령 은 date입니다.

date 명령호출하는 두 가지 방법이 있습니다 (Linux).

   date [OPTION]... [+FORMAT]
   date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

쉬운

가장 쉬운 방법은 간단한 상대 날짜를 date -s사용할 수 있으므로 사용하는 것입니다

 $ date -s yesterday; date
 date: cannot set date: Operation not permitted
 Sat Jan  5 07:21:07 EST 2019
 Sun Jan  6 07:21:07 EST 2019

제한된 사용자로 인해 날짜가 변경되지 않았습니다 $. 실제로 날짜를 변경하려면 root ( #) 또는 sudo를 사용하십시오.

 $ sudo date -s yesterday; date
 Sat Jan  5 07:21:07 EST 2019
 Sat Jan  5 07:21:07 EST 2019

따라서 상대 날짜의 일부를 변경하는 것은 이름을 지정하는 것만 큼 쉽습니다.

 $ date -s "5 years ago"
 Mon Jan  6 08:26:26 EST 2014

 $ date -s "+6 months"
 Sat Jul  6 08:28:39 EDT 2019

 $ date -s "+3 hours -13 minutes"
 Sun Jan  6 11:16:59 AST 2019

절대 날짜는 더 자세하게 필요하므로 약간 더 복잡합니다.

 $ date -s "2001-07-23 10:11:12"

또는 date 명령을 두 번 사용할 수 있습니다.

 $ date -s "$(date +'%Y-%m-%d %H:%M:%S')"

%유효한 값으로 대체 하면 날짜가 설정됩니다 (루트로만).

 $ date -s "$(date +'%Y-11-%d %H:%M:%S')"
 Wed Nov  6 08:37:15 EST 2019

곧장

두 번째 날짜 호출 양식은 시스템 날짜 를 직접 변경하는 데 사용 됩니다.

 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

그래서 :

 date 11230812              # MMDDhhmm

날짜를 11 월 23 일 08시와 12 분으로 설정합니다.

BSD의 명령은 비슷 하지만 형식이 다릅니다 ([[[[cc] yy] mm] dd] HH] MM [.ss]).

시도 date는 (아무 것도 변경하지 않고) 어떻게 할 것인지 확인하기 위해 제한된 사용자로 :

 $ date 11230812
 date: cannot set date: Operation not permitted
 Sat Nov 23 08:12:00 EST 2019

또는 실제로 날짜를 변경하려면 루트로 사용하십시오.

 # date 11230812
 # date
 Sat Nov 23 08:12:00 EST 2019

NTP 또는 chrony와 같은 서비스는 영향을받습니다. 다시 시작하면 날짜가 실제 날짜로 다시 설정됩니다.

연도를 설정하려면 YY를 추가하십시오.

 $ date 1123081222
 date: cannot set date: Operation not permitted
 Wed Nov 23 08:12:00 EST 2022

또는 연도 세기 를 설정하는 CCYY :

 $ date 112308121982
 date: cannot set date: Operation not permitted
 Tue Nov 23 08:12:00 EST 1982

-1

아래 나열된 date 명령 및 시간 형식을 사용하여 Linux Kernal을 사용하는 Android Things에서 수행되는 터미널 쉘 명령의 날짜를 성공적으로 설정했습니다.

날짜 092615002017.00

MMDDHHMMYYYY.SS

MM-월-09

DD-일-26

HH-시간-15

MM-최소-00

YYYY-년-2017

.SS-초-00


이것은 GNU 또는 BSD date에서 작동하지 않기 때문에 이것이 어떤 시스템과 관련이 있으며이 특정 질문과 관련이있는 방법에 대한 추가 정보를 추가 할 수 있습니까?
Kusalananda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.