我正在运行 Ubuntu 服务器 16.04,通过 SSH 进入。
我正在寻找一种方法来让 watch 命令监视多个事物但遇到了一个问题。
我有一个工作功能,可以监视我的 CPU 和 GPU 温度,如下所示。
temps() {
watch -d -n1 'sensors coretemp-isa-0000 nouveau-pci-0100'
}
这对我来说非常有用,可以提供这个输出。
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +35.0c
Core 1: +33.0c
Core 2: +33.0c
Core 3: +34.0c
nouveau-pci-0100
Adapter: PCI adapter
GPU core: +0.86 V
fan1: 780 RPM
Temp1: +41.0c
Power1: 13.26 W
我也有这个监控 CPU MHz 的功能。
mhz() {
watch -d -n1 'cat /proc/cpuinfo | grep "MHz"'
}
这本身也很好用,给了我这个输出
cpu MHz :1600.001
cpu MHz :1600.001
cpu MHz :1600.001
cpu MHz :1600.001
但我希望能够有一个函数可以同时提供两个输出,但我无法让它工作。
我尝试了一些方法将这两个功能合二为一,.bashrc
这样我就得到了一个同时包含温度和核心时钟的输出。但到目前为止,watch
它只给我错误或空白屏幕。
这些是我尝试过的一些方法。(抱歉搞错了这些命令,但我觉得自己尝试是一种很好的学习方法,但到目前为止我还没有成功。)
我首先尝试的只是将它们放在一起。
watch -d -n1 'sensors coretemp-isa-0000 nouveau-pci-0100 cat /proc/cpuinfo | grep "MHz"'
这只会给我错误。我尝试了许多不同的引用方式来尝试让它工作(我知道 watch 对引用非常讲究)。当失败时,我尝试为传感器和 cat 命令创建变量,但我不认为这对我有帮助,例如我有这个......
temp="watch -d -n1 'sensors coretemp-isa-0000 nouveau-pci-0100'"
clock="watch -d -n1 'cat /proc/cpuinfo | grep "MHz"'"
watch -d -n1 $temp $clock
再次失败:(
如果有人能帮助我弄清楚如何让 watch 命令输出两者,这样我就不必有两个单独的功能,我只想在我的 ipad 上的 SSH 中输入“temps”,然后能够在 watch 命令的一个输出中看到我的服务器温度和核心时钟。
答案1
它很简单,只需将两个命令与;
参数字符串连接在一起即可watch
:
watch -d -n1 'sensors coretemp-isa-0000 nouveau-pci-0100 ; grep MHz /proc/cpuinfo'
还要注意,我简化了你的第二个命令,因为它grep
可以直接从文件中读取。
答案2
你可以这样做:
temp='sensors coretemp-isa-0000 nouveau-pci-0100;'
clock='cat /proc/cpuinfo | grep "MHz";'
watch -d -n1 $temp $clock
这样你会得到 3 样东西:
;
通过在分配给变量的命令末尾使用,可以分隔不同的命令- 通过它你可以添加更多的变量并且为它们分配更多的命令然后把它们添加到监视中
- 在
;
每个命令的末尾,你可以重新排序变量来改变显示信息的顺序
您还可以创建一个数组来存储命令,然后将整个数组传递给 watch 命令,但这不一定会使脚本的维护变得更容易 - 如果您想保持其整洁和可读性,将新命令添加到数组将需要为每个命令添加新行 - 您只是不必记住将新变量添加到 watch 命令。数组也会对上述第 3 点产生影响 - 您必须重新排序数组分配以重新排序显示的信息。
编辑:
改进也是cat /proc/cpuinfo | grep "MHz";
个grep MHz /proc/cpuinfo;
好主意,正如提到的字节指挥官。