返回顶部
首页 > 资讯 > 后端开发 > GO >从 Golang 中的 /proc/meminfo 中提取内存和交换信息
  • 285
分享到

从 Golang 中的 /proc/meminfo 中提取内存和交换信息

golang开发 2024-02-12 18:02:51 285人浏览 八月长安
摘要

PHP小编草莓今天给大家介绍一个非常实用的方法,即从golang中的/proc/meminfo中提取内存和交换信息。在Golang开发过程中,我们经常需要获取系统的内存和交换信息,以便

PHP小编草莓今天给大家介绍一个非常实用的方法,即从golang中的/proc/meminfo中提取内存和交换信息。在Golang开发过程中,我们经常需要获取系统的内存和交换信息,以便进行一些性能优化或者资源管理的操作。而/proc/meminfo是一个保存了系统内存和交换信息的文件,我们可以通过读取该文件来获取所需的信息。接下来,我将为大家详细介绍如何使用Golang来提取/proc/meminfo中的内存和交换信息,希望对大家有所帮助。

问题内容

我想从 golang 中的 /proc/meminfo 中提取 memtotal、memfree、memavailable、swaptotal 和 swapfree 的值。到目前为止,我得到的最接近的是使用 fmt.sscanf() ,它将一次给出我想要的值,但我也得到了许多带有零的输出行。这是我正在使用的代码:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    f, e := os.open("/proc/meminfo")
    if e != nil {
        panic(e)
    }
    defer f.close()
    s := bufio.newscanner(f)
    for s.scan() {
        var n int
        fmt.sscanf(s.text(), "memfree: %d kb", &n)
        fmt.println(n)
    }
}

这给了我以下结果:

0
11260616
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

所以第一个问题,有没有办法将结果限制为我想要的一个值(非零)?或者,有没有更好的方法来解决这个问题?

我的 /proc/meminfo 文件如下所示:

MemTotal:       16314336 kB
MemFree:        11268004 kB
MemAvailable:   13955820 kB
Buffers:          330284 kB
Cached:          2536848 kB
SwapCached:            0 kB
Active:          1259348 kB
Inactive:        3183140 kB
Active(anon):       4272 kB
Inactive(anon):  1578028 kB
Active(file):    1255076 kB
Inactive(file):  1605112 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194304 kB
SwapFree:        4194304 kB
Dirty:                96 kB
Writeback:             0 kB
AnonPages:       1411704 kB
Mapped:           594408 kB
Shmem:              6940 kB
KReclaimable:     151936 kB
Slab:             253384 kB
SReclaimable:     151936 kB
SUnreclaim:       101448 kB
KernelStack:       17184 kB
PageTables:        25060 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    12351472 kB
Committed_AS:    6092984 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       40828 kB
VmallocChunk:          0 kB
Percpu:             5696 kB
AnonHugePages:    720896 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      230400 kB
DirectMap2M:    11235328 kB
DirectMap1G:    14680064 kB

解决方法

注意,s.Scan() 逐行读取输入。如果某行与给 fmt.Sscanf 的格式字符串不匹配,则程序将输出 0 作为 var n int 在循环内声明。我的建议是检查 fmt.Sscanf` 返回的第一个结果,即匹配的项目数。因此,如果第一个结果是 1,则表示有匹配项并且可以输出该值。请参阅此处的工作示例:https://www.php.cn/link/25d0a45ccd9e33b6b1ef8760801b6841 p>

编辑:我试图尽可能接近您的代码。可能还会存在其他问题,因为所使用的测量单位可能会根据 手册页。但是,如果系统上的相关值始终以“kB”为单位输出,那么它对于您的用例来说可能已经足够了。

以上就是从 Golang 中的 /proc/meminfo 中提取内存和交换信息的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 从 Golang 中的 /proc/meminfo 中提取内存和交换信息

本文链接: https://lsjlt.com/news/563880.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 从 Golang 中的 /proc/meminfo 中提取内存和交换信息
    php小编草莓今天给大家介绍一个非常实用的方法,即从Golang中的/proc/meminfo中提取内存和交换信息。在Golang开发过程中,我们经常需要获取系统的内存和交换信息,以便...
    99+
    2024-02-12
    golang开发
  • 计算机中能直接与CPU交换信息的存储器是什么
    这篇文章主要介绍了计算机中能直接与CPU交换信息的存储器是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。能直接与CPU交换信息的存储器是:内存储器。内存储器是计算机主机的...
    99+
    2023-06-14
  • 微信小程序中form表单提交和取值的示例分析
    这篇文章主要介绍了微信小程序中form表单提交和取值的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序中form 表单提交和...
    99+
    2024-04-02
  • 微信小程序如何从本地缓存中异步获取指定key对应的内容
    这篇文章主要为大家展示了微信小程序如何从本地缓存中异步获取指定key对应的内容,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“微信小程序如何从本地缓存中异步获取指定key对应的内容”这篇文章吧。从本...
    99+
    2023-06-26
  • 微信小程序如何从本地缓存中同步获取指定key对应的内容
    这篇文章主要为大家展示了微信小程序如何从本地缓存中同步获取指定key对应的内容,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“微信小程序如何从本地缓存中同步获取指定key对应的内容”这篇文章吧。从本...
    99+
    2023-06-26
  • Python 提取 PDF 文件的标题、日期和内容并将其存储到 MySQL 数据库中
    一、要使用 Python 提取 PDF 文件的标题、日期和内容并将其存储到 MySQL 数据库中,您可以按照以下步骤操作: 安装必要的库:pdfminer, PyPDF2, mysql-connect...
    99+
    2023-09-12
    数据库 mysql python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作