适用于golang的faketime姿势
libfaketime
我希望我的Go程序,在Ubuntu服务器上运行,并由主管监控,使用假服务器时间。
在我的supervisor配置中,我使用此命令作为执行命令:
“faketime ‘last Friday 5 pm’ go run main.go”
程序运行,但显示当前时间。
原因:
libfaketime不能用于静态链接或setuid程序,因为ld_预加载不可用于此类程序。
有没有让我编译的go程序使用faketime?
通过cgo替换time.Now()
example https://github.com/asppj/gofaketime
package main
import (
"time"
"github.com/asppj/gofaketime"
)
func main() {
println("系统时间", time.Now().Format(time.RFC3339))
println("启动补丁>>>")
faker := gofaketime.NewFakeTime()
defer faker.Close()
println("修改后的时间", time.Now().Format(time.RFC3339))
println("运行完成")
}