linux - 如何正确地将 unix top 命令输出保存到变量中?

标签 linux bash shell unix top-command

我必须将 top 命令的输出保存到一个变量中,我这样做:

myvar=`top -b -n1 | head -n 18`

问题是它似乎忽略了返回字符,所以当我回显 $myvar 的内容时,我看到类似这样的内容:

top - 15:15:38 up 745 天,15:08,5 个用户,平均负载:0.22、0.27、0.32 任务:总共 133 个,1 个运行,132 个 sleep ,0 个停止,0 个僵尸 Cpu( s): 6.4% us, 1.6%sy, 0.0% ni, 91.7% id, 0.3% wa, 0.0% hi, 0.0% si Mem: 2074716k total, 2038716k used, 36000k free, 84668k buffers Swap: 4192924k total, 107268k used , 4085656k 等...

如何正确保存所有top数据?

最佳答案

注意区别:

#! /bin/bash

x=`top -b -n 1 | head -n 5`
echo $x
echo --------------------
echo "$x"

输出:

top - 14:33:09 up 7 days, 5:58, 4 users, load average: 0.00, 0.00, 0.09 Tasks: 253 total, 2 running, 251 sleeping, 0 stopped, 0 zombie Cpu(s): 1.6%us, 0.4%sy, 70.3%ni, 27.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3926784k total, 3644624k used, 282160k free, 232696k buffers Swap: 9936160k total, 101156k used, 9835004k free, 1287352k cached
--------------------
top - 14:33:09 up 7 days,  5:58,  4 users,  load average: 0.00, 0.00, 0.09
Tasks: 253 total,   2 running, 251 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.6%us,  0.4%sy, 70.3%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3926784k total,  3644624k used,   282160k free,   232696k buffers
Swap:  9936160k total,   101156k used,  9835004k free,  1287352k cached

没有引号,变量的内容在 shell 的参数处理中被磨碎。

关于linux - 如何正确地将 unix top 命令输出保存到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2142377/

相关文章:

linux - CentOS:为什么 'cma' 进程占用这么多内存?

linux - 如何在 unix 中复制文件和部分文件夹结构?

对标准输出的每一行进行正则表达式并推送到 shell/bash 中的数组

linux - Linux 中文件大小增加的进度条

linux - 我的自旋锁有问题吗?

linux - 递归复制/dev/null到文件pattern

linux - Linux TCP 堆栈如何处理无效的 ACK 序列号?

linux - Bash 脚本删除 C 代码文件中不存在代码的注释行?

鞭尾/对话框菜单项中的 bash 空格

mysql - 为什么我无法从 bash 中的 fifo 读取管道 sql 的结果?