터미널에서 시간대 설정 로그를 조정하는 응용

터미널에서 시스템 시계의 시간대를 변경하고 싶습니다.

이것은 할 수 있습니다

tzselect

“터미널에서 GUI를 엽니 다”

또는

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

“gmt로 설정됩니다”

그러나 오프셋 즉 -1 또는 +5 등으로 시간대를 설정하는 방법이 있습니까?

타임 오프셋 또는 보고서 로그를 조정하는 응용 프로그램을 작성 중이므로이 작업을 수행해야하며 내가 가진 유일한 정보는 사용자 IP입니다. 웹 응용 프로그램을 사용하여 IP의 위치를 ​​찾을 수는 있지만 위치의 오프셋을 얻을 수 있다면 오프셋을 설정해야하지만 영역과 도시를 찾아야하는 경우 정말 고통 스럽습니다. .

누구나 +/- 시간으로 시스템 시계를 설정하는 방법에 대한 답을 알고 있다면 좋을 것입니다.



답변

터미널에서 시간대를 변경하려면 키보드에서 Ctrl+ Alt+ T를 눌러 터미널을 엽니 다. 열리면 아래 명령을 실행하십시오.

sudo dpkg-reconfigure tzdata

일단 열면 화면을 따라 시간대를 변경하십시오.


답변

timedatectl14.04에서 새로운 기능 을 사용하여 시간을 설정할 수도 있습니다 .

sudo timedatectl set-timezone America/New_York


답변

에서 GMT ± x 파일을 사용할 수 있습니다 /usr/share/zoneinfo/Etc.

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime


답변

이 스레드가 약간 오래되었다는 것을 알고 있지만 사용자가 웹 사이트에서 다운로드하여 배포 한 후 VM에서 시간대를 자동으로 설정해야했기 때문에 더 나은 솔루션을 찾고있었습니다. 내가 끝내었던 것은 다음과 같습니다.

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

새 네트워크에서 시작된 서버에서 geoip.ubuntu.com을 쿼리 한 다음 (내 스크립트가 먼저 연결을 확인) 응답에 따라 서버의 시간대를 설정합니다.

“wget ​​-q0-“는 wget에게 결과 만 stdout으로 출력 한 다음 $ tz 변수로 파이프하도록 지시합니다.

그것이 누군가를 돕기를 바랍니다!


답변

TL; DR은의 /etc/localtime 파일을 가리키는 심볼릭 링크입니다 /usr/share/zoneinfo/Continent/City. 지점을 변경하면 시간대를 변경할 수 있습니다.

시간대를 변경하려면 /etc/localtime원하는 도시에 대한 기호 링크를 제거 하고 할당하십시오. 예를 들어이 ls -l /etc/localtime파일이을 가리키는 것으로보고합니다 /usr/share/zoneinfo/America/Denver. 뉴욕으로 바꾸려면

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. 시계가 업데이트 될 때까지 잠시 기다립니다.

스크린 샷은 아래의 단계와 확인을 보여줍니다. timedatectl

여기에 이미지 설명을 입력하십시오


답변

시간대를 업데이트하는 쉬운 방법은를 사용하는 것 sudo dpkg-reconfigure tzdata입니다. 그러나 이것은 쉽게 스크립트되지 않습니다.

스크립트를 통해 시간대를 명시 적으로 설정하려면 (예 : VM 설정) 레시피는 다음과 같습니다.

원하는 시간대에 대한 변수를 설정하십시오 (예 :

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

유효한 값은 아래의 디렉토리 및 파일 이름 /usr/share/zoneinfo입니다.

그런 다음 간단히

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

모두 유의 /etc/localtime/etc/timezone일치해야합니다.

아마도 이제 모든 서비스를 업데이트하기 위해 재부팅하십시오 (예 : cron).


답변

내가 사용하는 방법은 미국 이외의 시간대에 대해 걱정할 필요가 없으므로 미국 중심입니다.

현재 시간대를 결정해야하는 경우 다음 중 하나를 수행합니다.

cat /etc/timezone

또는

sudo hwclock --show

그런 다음 수행합니다.

timedatectl set-timezone <_designation_>

여기서 <_designation_>다음 중 하나입니다 :

미국 / 동부
미국 / 중앙
미국 / 마운틴
미국 / 태평양
미국 / 알래스카
미국 / 알 루시아
미국 / 애리조나
미국 / 동부 인디애나
미국 / 하와이
미국 / 인디애나-스타 케
미국 / 미시간
미국 / 태평양
미국 / 사모아

EG :

timedatectl set-timezone US/Eastern

다른 시간대 지정은 여기에서 찾을 수 있습니다 :
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones