Linux 从/proc返回信息的脚本/
我正在尝试编写一个脚本,该脚本将从/proc/cpuinfo、/proc/meminfo和/proc/version文件返回信息 从cpuinfo文件中,我想返回cpu Mhz和型号名称。 我可以通过这些命令得到这些Linux 从/proc返回信息的脚本/,linux,bash,awk,Linux,Bash,Awk,我正在尝试编写一个脚本,该脚本将从/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/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 #:
我知道如何使用切割、awk等,但不知道如何设置。我也不知道如何强制计算所使用的mem
如果您能提供任何帮助,我们将不胜感激
编辑:我使用更多,因为我不太熟悉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脚本将为您完成所有工作(尽管不完全按照示例输出的顺序):
通过简化的方式,您可以执行以下操作: 示例
#!/bin/sh
LOCATION=$1
if [ "$#" -ne "1" ]
then
echo "Usage: ./$0 <FILE>"
else
model=$(cat /proc/cpuinfo |grep -m 1 "model name"|cut -d' ' -f 4-);
mhz=$(cat /proc/cpuinfo |grep -m 1 "cpu MHz"|cut -d' ' -f 3-);
mem=$(cat /proc/meminfo | grep MemTotal|cut -d' ' -f 2-);
free=$(cat /proc/meminfo | grep MemFree|cut -d' ' -f 2-);
ver=$(cat /proc/version|cut -d' ' -f 3);
fi
echo -e \
"/proc/cpuinfo, Model Name: $model
/proc/cpuinfo, CPU MHz: $mhz
/proc/meminfo, MemTotal: $mem
/proc/meminfo, MemFree: $free
/proc/version, Linux Verion #: $ver" > $LOCATION
#/垃圾箱/垃圾箱
地点=$1
如果[“$#”-ne“1”]
然后
echo“用法:./$0”
其他的
模型=$(cat/proc/cpuinfo | grep-m1“模型名”| cut-d'-f4-);
兆赫=$(cat/proc/cpuinfo | grep-m1“cpu兆赫”| cut-d'-f3-);
mem=$(cat/proc/meminfo | grep MemTotal | cut-d'-f2-);
免费=$(cat/proc/meminfo | grep MemFree | cut-d'-f2-);
版本=$(cat/proc/version | cut-d'-f 3);
fi
回声e\
“/proc/cpuinfo,型号名称:$Model
/进程/CPU信息,CPU MHz:$MHz
/proc/meminfo,MemTotal:$mem
/proc/meminfo,MemFree:$free
/进程/版本,Linux Verion#:$ver“>$LOCATION
这将把每个结果放在一个变量中,这样您就可以echo
将其放在一个文件中,当您调用类似sh test.sh mynewfile.txt这样的脚本时,您可以声明该文件
至于“我也不知道如何强制计算所使用的mem。”请更新您的问题,以包括您希望这些值如何出现(kb、MB、GB)以及您正在寻找的样本输出。以下是如何仅使用awk获取值:
model=$(awk -F: '/model name/ {print $2;exit}' /proc/cpuinfo)
mhz=$(awk -F: '/cpu MHz/ {print $2;exit}' /proc/cpuinfo)
mem=$(awk -F"[: ]+" '/MemTotal/ {print $2;exit}' /proc/meminfo)
etc
发布示例输入和预期输出。就我个人而言,我不知道这些文件可以包含什么,但我对awk有一点了解,也许可以提供帮助。你熟悉Python吗?如果是的话,我在这里的文章:可能会有所帮助。完全没有理由向grep输送更多
。猫的无用使用已经够糟糕的了,但这是更多的无用使用!只需执行grep MemTotal/proc/meminfo
您可能想要丢失命令。@tripleee猫并不是无用的人。对于不习惯*nix shell的人来说,它提供了一定程度的详细信息,这对于帮助OP了解命令发生了什么很重要。如果没有它,就像你读英语一样(从左到右),这个命令就没有意义,也更难理解。我想使用来自MemTotal和MemFree的任何东西。是否需要这样的工作:memused=$(MemTotal MemFree)??我试图不让自己一下子变得太过势不可挡。所以第一点是保持操作的“味道”,awk的回答是“但是你真的不需要为此做那么多工作”。
model=$(awk -F: '/model name/ {print $2;exit}' /proc/cpuinfo)
mhz=$(awk -F: '/cpu MHz/ {print $2;exit}' /proc/cpuinfo)
mem=$(awk -F"[: ]+" '/MemTotal/ {print $2;exit}' /proc/meminfo)
etc