하루 중 특정 시간에만 발생하는 소프트웨어 측면을 테스트해야합니다. 하루 종일 기다리거나 (오전 2시) 여기에 시간을 바꾸고 싶습니다.
그러나 나는 그것을 영구적으로 바꾸지 않고 싶습니다 .
을 사용하여 시간 date
을 변경 한 다음 다시 변경할 수 있다는 것을 알고 있지만 더 좋은 방법이 있습니까?
해당 OS는 VM에서 실행중인 RHEL6입니다.
하루 중 특정 시간에만 발생하는 소프트웨어 측면을 테스트해야합니다. 하루 종일 기다리거나 (오전 2시) 여기에 시간을 바꾸고 싶습니다.
그러나 나는 그것을 영구적으로 바꾸지 않고 싶습니다 .
을 사용하여 시간 date
을 변경 한 다음 다시 변경할 수 있다는 것을 알고 있지만 더 좋은 방법이 있습니까?
해당 OS는 VM에서 실행중인 RHEL6입니다.
답변:
libfaketime
( GitHub ) 라는 라이브러리 가있어 시스템에 주어진 시간을 응용 프로그램에보고 할 수 있습니다. 시스템이 프로그램 실행 기간 동안 고정 된 시간을보고하도록하거나 특정 시간 (예 : 01:59:30)에 시계를 시작하도록 할 수 있습니다. 기본적으로, 가짜 로더 라이브러리를 라이브러리 로더를 통해 프로그램의 메모리 내 이미지에 연결하고 시스템 시간과 관련된 모든 시스템 호출을 자체 방식으로 캡처하고 처리합니다. 시스템 시간을 정확하게 변경 하지는 않지만 실행중인 다른 것에 영향을주지 않고 특정 응용 프로그램에 보고 되는 시간을 변경합니다. 시스템 시간).
그것을 사용하는 방법에는 여러 가지 변형이 있지만 libfaketime으로 프로세스가 생각하는 시간을 변경하는 것은 샘플 코드와 함께 철저한 목록을 작성하여 시도하는 것처럼 보입니다 . 검색 대상을 알고 있다면 Google에서 몇 가지 예를 찾아 낼 수도 있습니다.
RHEL 저장소를 통해 사전 패키지로 제공되지는 않지만 Debian은이를 패키지 이름 아래에 제공합니다faketime
. 또한 소스 코드를 사용하여 빌드하기를 기대합니다 ( configure
단계 또는 이와 비슷한 단계 가 필요하지 않음 ).
내가 할 일은 먼저 원격 서버와 시간을 동기화 하는 ntp
서비스 를 설치하는 것 입니다. 그런 다음 서비스를 중지하고 날짜를 수동으로 변경 한 후 재생하고 서비스를 다시 시작하십시오.
service ntpd stop
date -s "Aug 11 2012"
[ do stuff ]
service ntpd start