작업중인 소프트웨어 프로젝트의 특정 시간대 관련 버그를 해결하기 위해 “시스템에 변경 사항을 복제하려고합니다” s 시계는 timedatectl를 사용하여 소프트웨어 동작을 확인합니다.

나는 실행하여 달성하려고합니다.

timedatectl set-timezone America/New_York timedatectl set-local-rtc 1 timedatectl set-ntp false timedatectl set-time "2017-03-12 01:58:50" && hwclock -w 

이렇게하고 바로 timedatectl를 실행하면 다음 예상 시간이 표시됩니다.

Local time: Sun 2017-03-12 01:58:51 EST Universal time: Sun 2017-03-12 06:58:51 UTC RTC time: Sun 2017-03-12 01:58:51 Time zone: America/New_York (EST, -0500) System clock synchronized: no systemd-timesyncd.service active: no RTC in local TZ: yes 

그러나 그 후 10 초가 지나면 분이 xx:59로 변경되면 현지 및 표준시가 현재 시간으로 “재부팅”됩니다.

Local time: Wed 2019-08-07 21:01:41 EDT Universal time: Thu 2019-08-08 01:01:41 UTC RTC time: Sun 2017-03-12 01:58:57 Time zone: America/New_York (EDT, -0400) System clock synchronized: no systemd-timesyncd.service active: no RTC in local TZ: yes 

여기서 내가 놓친 것은 무엇입니까?

내 설정은 Vagrant Ubuntu 18 VM (Linux vagrant 4.15.0-51 / vm box “bento / ubuntu-18.04”)입니다.

댓글

  • VM 시간이 호스트 ' 시간과 동기화되었음을 알 수 있습니다. Vagrant에 익숙하지 않으므로 ' 해결 방법을 알려줄 수 없습니다.

답변

지금보고있는 동작을 설명하지는 않지만 제목에있는 질문에 답해야합니다.

시스템 시간을 변경하는 대신 faketime TZ 환경 변수 :

$ date; faketime -f -15d date; TZ=America/New_York faketime -f -15d date Thu 8 Aug 10:21:13 CEST 2019 Wed 24 Jul 10:21:13 CEST 2019 Wed 24 Jul 04:21:13 EDT 2019 

이렇게하면 나머지 시스템에 영향을주지 않고 자체 시간대, 날짜 및 시간으로 프로그램을 실행할 수 있습니다.

$LD_PRELOAD 해킹을 사용하여 응용 프로그램에 코드를 삽입합니다. 정적으로 연결된 실행 파일이나 setuid / setgid 실행 파일에는 작동하지 않습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다