gpt4 book ai didi

linux - 从/proc/返回信息的脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:15 25 4
gpt4 key购买 nike

我正在尝试编写一个脚本,该脚本将从/proc/cpuinfo、/proc/meminfo 和/proc/version 文件中返回信息。

我想从 cpuinfo 文件返回 cpu Mhz 和型号名称。我可以通过这些命令得到这些

    more /proc/cpuinfo | grep "model name" | head -n 1

more /proc/cpuinfo | grep "cpu MHz"

对于 meminfo 文件,我想获取总内存、可用内存和已用内存。我可以通过这些命令获得前 2 个:

    more /proc/meminfo | grep MemTotal
more /proc/meminfo | grep MemFree

我可以用这个获取 linux 版本#:

    more /proc/version

然后我可以通过将第一个输出重定向到一个文件中将其保存为一个文件,然后使用 >> 而不是 > 附加下一个信息项。

我的问题是 - 我如何编写一个脚本来获取上面的信息并将其放入这种格式:

  /proc/cpuinfo, Model name: (result of first command above)
/proc/cpuinfo, cpu Mhz: (result of 2nd)
/proc/meminfo, MemTotal: (result of 3rd)
/proc/meminfo, MemFree: (result of 4th)
/proc/meminfo, MemUsed: (calculate it based off memtotal and memfree)
/proc/version, Linux version #:

我知道如何使用 cut、awk 等,但不知道如何设置。我也不知道如何强制计算所使用的内存。

如果您能提供任何帮助,我们将不胜感激。

编辑:我用的比较多,因为我对 Linux 不太熟悉。

结合此处发布的内容和我需要的想法,我越来越接近我想做的事情。

数学函数 -我只想获取 memtotal 并从中减去 memfree。

我可以创建一个变量吗

    memused=$(bc $memtotal - memfree)

然后回显出来?

最佳答案

使用一个简单的 shell 函数,例如:

filedata() {
grep -H "$@" | sed -e 's/:/, /'
}

你可以通过调用获取大部分你需要的数据

filedata 'model name' /proc/cpuinfo
filedata -E 'Mem(Total|Free)' /proc/meminfo
filedata . /proc/version

要获取 MemUsed,您可以使用类似的东西:

awk '/MemFree/ {free=$2} /MemTotal/ {total=$2} END {print FILENAME",","MemUsed:", total-free}' /proc/meminfo

或者,以下 awk 脚本将为您完成这一切(尽管与示例输出的顺序不完全相同):

awk '/model name|cpu MHz|MemTotal|MemFree|^Linux/ {
print FILENAME",",$0
}

/MemTotal|MemFree/ {
v=$1
gsub(/^Mem/, "", v)
gsub(/:$/, "", v)
mem[v]=$2
}

END {
print "/proc/meminfo, MemUsed:", mem["Total"] - mem["Free"]
}' /proc/cpuinfo /proc/meminfo /proc/version

关于linux - 从/proc/返回信息的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com