进程级系统时间修改

211 阅读3分钟

1、代码仓库

git clone github.com/wolfcw/libf…

2、安装

make && make install

3、测试

测试 一:
(1) echo '@2033-12-24 08:15:42' > /tmp/my-faketime.rc

(2) LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 \

  FAKETIME_TIMESTAMP_FILE=/tmp/my-faketime.rc \

  FAKETIME_DONT_RESET=1 \

  bash -c 'while true ; do date ; sleep 1 ; done'
(3) 测试效果
  [root@iZbp1bh3oeew2koe4ntrpyZ ~]# echo '@2033-12-24 08:15:42' > /tmp/my-faketime.rc
[root@iZbp1bh3oeew2koe4ntrpyZ ~]# LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 \
>   FAKETIME_TIMESTAMP_FILE=/tmp/my-faketime.rc \
>   FAKETIME_DONT_RESET=1 \
>   bash -c 'while true ; do date ; sleep 1 ; done'
Sat Dec 24 08:15:42 CST 2033
Sat Dec 24 08:15:43 CST 2033
Sat Dec 24 08:15:44 CST 2033
Sat Dec 24 08:15:45 CST 2033
Sat Dec 24 08:15:46 CST 2033
Sat Dec 24 08:15:47 CST 2033
^C
[root@iZbp1bh3oeew2koe4ntrpyZ ~]# 

测试二:
(1) 代码片段

log.info("TimeTester Application started");

new Thread(() -> {
    while (true) {
        log.info("LocalDateTime.now():{}", LocalDateTime.now());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        log.info("new Date():{}", sdf.format(new Date()));
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}).start();

(2)执行命令
[root@iZbp1bh3oeew2koe4ntrpyZ home]# LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1   FAKETIME_TIMESTAMP_FILE=/tmp/my-faketime.rc   FAKETIME_DONT_RESET=1   java -jar time-tester-0.0.1-SNAPSHOT.jar 
08:15:42.485 [main] INFO com.example.time.tester.TimeTesterApplication -- TimeTester Application started
08:15:42.543 [Thread-0] INFO com.example.time.tester.TimeTesterApplication -- LocalDateTime.now():2033-12-24T08:15:42.543623945
08:15:42.660 [Thread-0] INFO com.example.time.tester.TimeTesterApplication -- new Date():2033-12-24 08:15:42

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.2.4)

(3)执行结果
2033-12-24T08:15:45.391+08:00  INFO 2907 --- [time-tester] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1626 ms
2033-12-24T08:15:45.662+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : LocalDateTime.now():2033-12-24T08:15:45.662959328
2033-12-24T08:15:45.663+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : new Date():2033-12-24 08:15:45
2033-12-24T08:15:45.988+08:00  INFO 2907 --- [time-tester] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path ''
2033-12-24T08:15:46.017+08:00  INFO 2907 --- [time-tester] [           main] c.e.time.tester.TimeTesterApplication    : Started TimeTesterApplication in 3.225 seconds (process running for 4.015)
2033-12-24T08:15:46.663+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : LocalDateTime.now():2033-12-24T08:15:46.663877422
2033-12-24T08:15:46.664+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : new Date():2033-12-24 08:15:46
2033-12-24T08:15:47.664+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : LocalDateTime.now():2033-12-24T08:15:47.664875252
2033-12-24T08:15:47.665+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : new Date():2033-12-24 08:15:47
2033-12-24T08:15:48.665+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : LocalDateTime.now():2033-12-24T08:15:48.665694340
2033-12-24T08:15:48.666+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : new Date():2033-12-24 08:15:48
2033-12-24T08:15:49.666+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : LocalDateTime.now():2033-12-24T08:15:49.666700045
2033-12-24T08:15:49.667+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : new Date():2033-12-24 08:15:49
2033-12-24T08:15:50.667+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : LocalDateTime.now():2033-12-24T08:15:50.667601400
2033-12-24T08:15:50.668+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : new Date():2033-12-24 08:15:50
2033-12-24T08:15:51.668+08:00  INFO 2907 --- [time-tester] [       Thread-0] c.e.time.tester.TimeTesterApplication    : LocalDateTime.now():2033-12-24T08:15:51.668467318