【发布时间】:2020-02-08 02:26:07
【问题描述】:
我有以下 Linux 命令,它提供 CPU%、RAM% 和硬盘百分比等指标。
echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
我想将它作为字符串存储在变量中。但是由于在 Linux 命令中使用了“,”,我无法存储。我怎样才能让它工作?
注意:我将其作为字符串存储在变量中,因为我想通过对服务器执行 ssh 并在 @987654321 的帮助下执行上述命令来检查 CPU%、RAM% 和硬盘百分比等指标python中的@库。
【问题讨论】:
-
请注意,此命令非常复杂。只需一个
awk调用就可以完成您依赖grep和sed的所有工作,并且在大多数平台上,top首先对于非交互式使用不是一个好的选择。 -
此外,使用反引号会增加许多使用现代(作为 POSIX sh 标准的一部分于 1991 年发布)
$(...)命令替换语法不会遇到的复杂性。 -
我的简单提示是在变量字符串上使用三引号: s = """ you comand " with any quote' " more command """ 。它用于多行字符串
-
@Wonka,不仅仅是 any 三引号字符串在这里工作;它必须是 raw 三引号字符串,因为文字字符串包含反斜杠文字。
-
@CharlesDuffy 感谢您对我使用的 Linux 命令的更好建议。因此,正如您向我建议的那样,您能否在此处使用一个高效的 Linux 命令发表评论,该命令给出了 CPU、RAM 和硬盘的使用百分比。
标签: python linux pexpect pxssh