Linux上是否有只输出CPU和内存使用情况的命令?

Linux上是否有只输出CPU和内存使用情况的命令?,linux,ubuntu,command-line-interface,cpu,ram,Linux,Ubuntu,Command Line Interface,Cpu,Ram,我正在创建一个数据库(用于研究),用于接收我电脑的CPU和MEM使用率(%) 因此,我需要输出整个系统(Linux/Ubuntu 18.04)的CPU和内存(RAM)使用率(%) 问题是,我使用以下命令获取由进程分隔的CPU和MEM信息: >> while true; do (echo "%CPU %MEM $(date)" && ps -e -o pcpu,pmem --sort=pcpu | cut -d" " -f1-5 | tail) > test.tx

我正在创建一个数据库(用于研究),用于接收我电脑的CPU和MEM使用率(%)

因此,我需要输出整个系统(Linux/Ubuntu 18.04)的CPU和内存(RAM)使用率(%)

问题是,我使用以下命令获取由进程分隔的CPU和MEM信息:

>> while true; do (echo "%CPU %MEM $(date)" && ps -e -o pcpu,pmem --sort=pcpu | cut -d" " -f1-5 | tail) > test.txt; sleep 5; done
这将提供以下输出:

%CPU %MEM wed jan  9 11:26:39 -03 2019
 0.0  0.0
 0.1  0.2
 0.1  1.4
 0.1  1.6
 0.4  1.4
 0.6  2.8
 1.0  2.4
 1.5  6.1
 4.1  0.6
12.4  8.2
我知道这个命令是按pcpu(我想是最“常用的进程”)排序的,但我只找到了收集这些数据的方法

重点是:

是否有一个命令来收集CPU和MEM使用率(单位%),而不使用所有这些行?我只需要数据库中使用的百分比(数字)和系统的最终使用率,如下所示:

%CPU %MEM wed jan  9 11:26:39 -03 2019
 53.0 32.2

您可以将脚本中的
tail
命令替换为:

awk 'BEGIN {cpu=0;mem=0} {cpu+=$1; mem+=$2} END {print cpu,mem}'
您的产品线将成为:

while true; do (echo "%CPU %MEM $(date)" && ps -e -o pcpu,pmem --sort=pcpu | cut -d" " -f1-5 | awk 'BEGIN {cpu=0;mem=0} {cpu+=$1; mem+=$2} END {print cpu,mem}') > test.txt; sleep 5; done

不是很优雅或高效,但这里有一个使用Python和
psutil
库的替代解决方案

打印cpu%和mem%的简短Python程序如下所示:

import psutil

cpu = psutil.cpu_percent()
mem = psutil.virtual_memory().percent
print("{}% {}%".format(cpu, mem))
$ while true; do python3 -c 'import psutil; cpu=psutil.cpu_percent(); mem=psutil.virtual_memory().percent; print("{}% {}%".format(cpu, mem))'; sleep 5; done
它可以写成一个shell-one-liner,如下所示:

import psutil

cpu = psutil.cpu_percent()
mem = psutil.virtual_memory().percent
print("{}% {}%".format(cpu, mem))
$ while true; do python3 -c 'import psutil; cpu=psutil.cpu_percent(); mem=psutil.virtual_memory().percent; print("{}% {}%".format(cpu, mem))'; sleep 5; done
$python3-c'导入psutil;cpu=psutil.cpu_percent();mem=psutil.virtual_memory().percent;打印(“{}%{}%.”格式(cpu,mem))“

因此,您可以在shell中以如下方式循环运行它:

import psutil

cpu = psutil.cpu_percent()
mem = psutil.virtual_memory().percent
print("{}% {}%".format(cpu, mem))
$ while true; do python3 -c 'import psutil; cpu=psutil.cpu_percent(); mem=psutil.virtual_memory().percent; print("{}% {}%".format(cpu, mem))'; sleep 5; done

(注意:
psutil
可以安装在Ubuntu系统上:
$sudo apt install python3 psutil

我也有类似的要求,只需打印CPU和内存使用情况。我创建了下面的脚本。我希望它会有用

checkResources.sh

CPU=$(top -b -d1 -n1|grep -i 'Cpu(s)'|head -c21 |cut -d ' ' -f2)
usedmem=$(top -b -d1 -n1|grep -i 'used'|head -c55 | cut -d ' ' -f10)
totmem=$(top -b -d1 -n1|grep -i 'used'|head -c19 |  cut -d ' ' -f4)
echo "CPU = $CPU%"
echo "Memory = $((usedmem/1024))/$((totmem/1024)) MB"
这将按如下方式打印输出

CPU=97.0%


内存=10230/15867 MB

不要使用
ps
,使用
top
进行此操作。请注意
ps
显示每个进程整个生命周期的CPU使用情况。此问题已被问和答了很多次,您必须努力避免找到答案…另请阅读有关。可能是relevant@Dominique
top
显示大量信息。有一种方法可以通过
top
仅获取CPU和MEM百分比?输出(CPU和MEM使用数)为空,并且终端会发出以下警告:>>isaac1@isaac3:~/Desktop/Test1$
为true时;do(echo“%CPU%MEM$(date)”和&ps-e-opcpu,pmem-sort=pcpu | cut-d”“-f1-5 | awk'{BEGIN{CPU=0;MEM=0}{CPU+=1;MEM+=2}END{print CPU,MEM}')>test.txt;sleep 5;done awk:第1行:缺失}临近开始awk:第1行:缺失}临近开始awk:第1行:缺失}临近开始awk:第1行:缺失}临近开始awk:第1行:缺失}临近开始awk:第1行:缺失}临近开始
您好,谢谢!对于MEM来说,它工作得很好,但是CPU百分比一直是空的(0%)。我已经安装了python(并使用
sudo apt install python3 psutil
命令安装了
psutil
),但终端显示
“没有名为psutil的模块”
。当我键入
python--version
时,它会显示
python2.7.15rc1
。我很困惑,因为
sudo apt install python3 psutil
命令应该安装python3,对吗?刚刚做了一个编辑。调用python3而不是python(或者安装python psutil而不是python3 psutil)很抱歉,仍然无法工作(我对linux命令和终端设备了解不多)。它说,
意外标记附近的语法错误“
我已经安装了psutil(如您所说)。我对它很好奇,因为当我转到
python
,然后导入psutil<代码>>>cpu=psutil.cpu_percent()<代码>>>mem=psutil.virtual_memory().percent<代码>>>打印(“{}%{}%.”格式(cpu,mem))它工作(cpu和mem返回值)。但是单行程序命令不起作用……您一直在混淆python和python3。“python”启动python版本2。。。“python3”启动python版本3。用一个或另一个。