unix - 伪造子进程的日期/时间
问题描述
在 Unix 系统上,有没有办法伪造子进程的感知日期和时间?
即,想象:
$ date
Fri Jun 28 10:50:35 CEST 2019
$ with_date 10/05/2019 date
Fri May 10 10:50:36 CEST 2019
如何执行with_date
命令?
典型的用例是测试与日期/时间相关的软件,模拟各种条件。
解决方案
有图书馆libfaketime。它使用库预加载机制来拦截要运行的程序的系统调用。一个用例(来自手册)是:
user@host> 日期
2016 年 11 月 23 日星期二 12:01:05 CESTuser@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" 日期
Mon Nov 8 12:01:12 CEST 2016user@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" FAKETIME_DONT_FAKE_MONOTONIC=1 java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111- b14) Java HotSpot(TM) 64 位服务器 VM(构建 25.111-b14,混合模式)
推荐阅读
- python - 如何在 PyQt4 中输入非 ASCII 字符而不出错?
- mysql - 连接查询中的“未知列”错误,旨在选择感兴趣组中的单行
- sql - 获取带有时区偏移的 UTC 日期和时间
- r - 如何在 R 中合并两个 ggplot.predict 图?
- c# - 如果超过 1 行,则从表类型插入 SQL Server 失败
- c++ - 如何使用 Visual Studio 2017 为 Win32 构建 SRP?
- react-native - 使用 Ionic、React Native、NativeScript 和 Flutter 捕获“通话结束”事件?
- django - 没有找到 NoReverseMatch URL Django
- python - AttributeError:“元组”对象没有属性“权重”
- cloudera - 黑白 Mapr 与 Cloudera 的区别?