MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / Sync

Method Sync

internal/utils/clock/manager.go:71–131  ·  view source on GitHub ↗

Sync 自动校对时间

()

Source from the content-addressed store, hash-verified

69
70// Sync 自动校对时间
71func (this *ClockManager) Sync() error {
72 if runtime.GOOS != "linux" {
73 return nil
74 }
75
76 nodeConfig, _ := nodeconfigs.SharedNodeConfig()
77 if nodeConfig == nil {
78 return nil
79 }
80
81 var config = nodeConfig.Clock
82 if config == nil || !config.AutoSync {
83 return nil
84 }
85
86 // check chrony
87 if config.CheckChrony {
88 chronycExe, err := executils.LookPath("chronyc")
89 if err == nil && len(chronycExe) > 0 {
90 var chronyCmd = executils.NewTimeoutCmd(3*time.Second, chronycExe, "tracking")
91 err = chronyCmd.Run()
92 if err == nil {
93 return nil
94 }
95 }
96 }
97
98 var server = config.Server
99 if len(server) == 0 {
100 server = "pool.ntp.org"
101 }
102
103 ntpdate, err := executils.LookPath("ntpdate")
104 if err != nil {
105 // 使用 date 命令设置
106 // date --set TIME
107 dateExe, err := executils.LookPath("date")
108 if err == nil {
109 currentTime, err := this.ReadServer(server)
110 if err != nil {
111 return fmt.Errorf("read server failed: %w", err)
112 }
113
114 var delta = time.Now().Unix() - currentTime.Unix()
115 if delta > 1 || delta < -1 { // 相差比较大的时候才会同步
116 var err = executils.NewTimeoutCmd(3*time.Second, dateExe, "--set", timeutil.Format("Y-m-d H:i:s+P", currentTime)).
117 Run()
118 if err != nil {
119 return err
120 }
121 }
122 }
123
124 return nil
125 }
126 if len(ntpdate) > 0 {
127 return this.syncNtpdate(ntpdate, server)
128 }

Callers 2

StartMethod · 0.95
initFunction · 0.45

Calls 6

ReadServerMethod · 0.95
syncNtpdateMethod · 0.95
ErrorfMethod · 0.80
UnixMethod · 0.80
FormatMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected