쉘스크립트를 사용하여 Linux에서 시간대 및 시간 설정

쉘스크립트를 사용하여 Linux에서 시간대 및 시간 설정

Linux OS를 사용하여 라우터에서 시간대와 시간을 설정하는 데 도움이 필요합니다.네트워크에서 원격으로 (Linux 커널 2.6.30 기반의 Linux 운영 체제).
이 작업을 수행하기 위해 CGI와 Shellscript를 사용합니다. 단계는 다음과 같습니다.

  1. 브라우저에서 시간 및 시간대 정보 가져오기
  2. CGI를 실행하여 시간 설정(C 사용)
  3. CGI는 Timezone_Setting 쉘 스크립트를 실행합니다.

3단계에서 스크립트로 수행한 작업은 다음과 같습니다.

매개변수($1)는 다음 문자열(A) 중 하나입니다:
"GMT-12", "GMT-11", "GMT-10", ... "GMT", "GMT+1", .. "GMT + 12".

다음을 사용하여 시간대를 설정할 수 있는 것 같습니다.

ln -sf /usr/share/zoneinfo/Japan /etc/localtime

질문:
1) 내가 하고 있는 일이 맞는가?
2) A 문자열에 위 명령을 어떻게 올바르게 사용할 수 있습니까?

참고: 위 명령에서 "일본"은 내 "/usr/share/zoneinfo" 디렉터리에 있는 파일 중 하나입니다. 다음과 같은 명령을 사용하기 전에 변환할 수 있습니다.

"GMT-9" <-> Japan

"GMT-5" <-> EST
( etc. )

하지만 이는 좋은 해결책은 아닌 것 같습니다.

답변1

시간대 설정 방법은 라우터에서 사용하는 C 라이브러리에 따라 다릅니다. 그리고glibc비임베디드 Linux 시스템에서 사용되는 C 라이브러리이며 /etc/localtime다음 파일 또는 그 복사본에 대한 심볼릭 링크입니다. /usr/share/zoneinfo그리고유클리브(저희 집 공유기에서 사용) 시간대 정보는 환경 변수 사양 /etc/TZ으로 위치하여 저장 됩니다(아래 참조). TZ라우터가 어떤 방법을 사용하는지 확인하세요. 라우터가 Glibc를 사용하는 경우 접근 방식이 올바른 것 같습니다.

GMT+9그리고 Japan시간대도 다릅니다. GMT+9GMT보다 항상 9시간 빠른 시간대를 나타냅니다.Japan 즉, 일본에서는 언제라도여름 시간일본의 과거 및 미래 시간대 변경. 아, 그리고 GMT-9방법이 틀렸어요.

특정 프로그램에서만 시간대를 설정해야 하는 경우 다음을 사용하세요.TZ환경 변수시간대 이름이나 사양으로 설정합니다. 예를 들어, 대부분의 서유럽 국가의 현재 DST 규칙에 대한 시간대 사양은 다음과 같습니다.

TZ=CET-1CEST,M3.5.0/2,M10.5.0/3

UTC+1(예: CET - 1 = UTC)에 해당하는 이라는 시간대를 나타냅니다 CET. 시간대는 3월 마지막 일요일 오전 2시부터 3월 마지막 일요일 오전 3시 사이의 CEST(기본값 +1시간 오프셋)입니다. 10월 사이. 간단한 연중 오프셋의 경우 다음과 같은 설정을 사용할 수 있습니다.

TZ='<GMT+9>-9'

관련 정보