为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 检索应用程序正常运行时间

Golang 检索应用程序正常运行时间

Go
Helenr 2022-01-17 20:14:22
我正在尝试检索我的Go应用程序的当前正常运行时间。我已经看到有一个包syscall提供了一个type Sysinfo_t和一个方法Sysinfo(*Sysinfo_t),它显然允许您检索正常运行时间(因为它是Sysinfo_t结构的一个字段)到目前为止我所做的是:sysi := &syscall.Sysinfo_t{}if err := syscall.Sysinfo(sysi); err != nil {    return http.StatusInternalServerError, nil}问题是在编译时我得到了这个:/path/to/file/res_system.go:43: undefined: syscall.Sysinfo_t/path/to/file/res_system.go:45: undefined: syscall.Sysinfo我搜索了一下,显然该方法和类型仅在 Linux 上可用,我需要该应用程序在 Linux 和 OsX(我目前正在使用)上运行。是否有一种交叉兼容的方式来检索应用程序的正常运行时间?注意:我宁愿不使用任何第三方库(除非它们是绝对必要的)
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

获得正常运行时间的简单方法是存储服务开始时间:


https://play.golang.org/p/by_nkvhzqD


package main


import (

    "fmt"

    "time"

)


var startTime time.Time


func uptime() time.Duration {

    return time.Since(startTime)

}


func init() {

    startTime = time.Now()

}


func main() {

    fmt.Println("started")


    time.Sleep(time.Second * 1)

    fmt.Printf("uptime %s\n", uptime())


    time.Sleep(time.Second * 5)

    fmt.Printf("uptime %s\n", uptime())

}


查看完整回答
反对 回复 2022-01-17
?
慕少森

TA贡献2019条经验 获得超9个赞

您应该使用包中的Since功能time

在应用程序启动时创建时间值:

startTime := time.Now()

然后随时询问:

uptime := time.Since(startTime)


查看完整回答
反对 回复 2022-01-17
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

系统调用在 Go 1.4 上被冻结。

注意:此包已锁定。应迁移标准 Go 存储库之外的代码以使用 golang.org/x/sys 存储库中的相应包。这也是应该应用新系统或版本所需的更新的地方。有关更多信息,请参阅https://golang.org/s/go1.4-syscall

使用它的Sysinfogolang.org/x/sys应该以跨平台的方式支持这一点,至少在 Unix 上是这样。


查看完整回答
反对 回复 2022-01-17
  • 3 回答
  • 0 关注
  • 375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号