본문 바로가기

AWS

[Linux/타임존 변경하기] 특정 시간대에 특정 코드가 발생하도록 설정해놓았는데 작동이 안된다면? - 타임존 설정을 살펴보자

일단 두가지를 살펴봐야 한다.

필자는 AWS EC2 서버를 이용중 이고 구동 서버는 톰캣을 사용하고 있으므로 아래 두개를 살펴 볼 것이다.

 

  • EC2 타임존
  • 톰캣 타임존

 

1. EC2 타임존 변경

EC2 서버의 기존 타임존은 UTC이다. 이는 세계 표준 시간으로 한국의 시간대가 아니다. 즉, 한국의 시간과는 9시간 차이가 발생한다. 이렇게 되면 서버에서 수행되는 JAVA 애플리케이션에서 생성되는 시간도 모두 9시간씩 차이가 나기 때문에 꼭 수정해야 할 설정이다. 서버의 시간을 한국 시간(KST)로 변경해보자.

 

다음 명령어를 차례로 수행하면 된다.

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

 

2. 톰캣 타임존 변경

필자는 스케줄러를 매일 새벽 4시 17분 해당 코드가 작동하도록 설정해놓은 상태였는데 작동이 안되었다.

 

 

톰캣 로그를 보아하니 저걸 구동할 당시는 2020-10-12였는데,  2020-10-11 이라고 이전 날짜가 찍히는 것이다.

 

 

알아보니 tomcat의 시간은 리눅스서버의 시간과는 별도였다.

톰캣에서는 기본적으로 /usr/share/tomcat8/bin/catalina.sh (tomcat이 깔린 위치/bin/catalina.sh) 에서

setenv.sh을 읽어다가 환경변수를 잡아준다. tomcat8에서는 기본적으로 setenv.sh가 없기때문에 만들어준다.

 

shell 파일 하나 만들어주자.

 

vi /usr/share/tomcat8/bin/setenv.sh

#!/bin/bash 
export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+9"