我正在运行 Ubuntu 服务器 16.04,我通过 SSH 进入。
我正在寻找一种方法让 watch 命令监控多个事情但遇到问题。
我有一个工作功能可以监控我的 CPU 和 GPU 温度,如下所示。
temps() {
watch -d -n1 'sensors coretemp-isa-0000 nouveau-pci-0100'
}
Run Code Online (Sandbox Code Playgroud)
这给我这个输出效果很好。
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
Run Code Online (Sandbox Code Playgroud)
我也有这个功能可以监控 CPU MHz..
mhz() {
watch -d -n1 'cat /proc/cpuinfo | grep "MHz"'
}
Run Code Online (Sandbox Code Playgroud)
这本身也很好用,给我这个输出
cpu MHz :1600.001
cpu MHz :1600.001
cpu MHz :1600.001 …Run Code Online (Sandbox Code Playgroud) 在尝试watch bash -c 'du -h /etc/passwd && df -h'时,文件路径似乎被完全忽略,而是du -h通过当前工作目录运行。当我运行时观察到相同的结果watch bash -c 'stat /etc/passwd && df -h',并stat返回stat: missing operand错误。相比之下,使用watch -e "command /path/to/file"或watch "command /path/to/file"工作没有问题。
为什么不watch bash -c 'du -h /etc/passwd && df -h'工作呢?是争论watch的问题还是bash争论的问题?
我想要一个变量每秒递增 1。
#!/bin/bash
var=0
watch -n 1 echo "$((var++))"
Run Code Online (Sandbox Code Playgroud)
输出(几秒钟后):
Every 1.0s: echo 0
0
Run Code Online (Sandbox Code Playgroud)
它在屏幕上没有改变,但是当我输入echo "$var"输出是 1.Why?
当我运行df -h | grep sdc一切正常时,我看到人类可读格式的数字:
/dev/sdc1 954G 889G 65G 94% /media/bohdan/teamdata
Run Code Online (Sandbox Code Playgroud)
当我运行sh -c "df -h | grep sdc"一切正常时,结果是一样的......
当我运行watch sh -c "df -h | grep sdc"......突然我不再有资格看到人类可读的数字:
/dev/sdc1 1000203520 934440320 65763200 94% /media/bohdan/teamdata
Run Code Online (Sandbox Code Playgroud)
为什么?