我写了一个简单的脚本来监控我的 GPU 时钟和温度。我希望它除了在终端上可见之外,还能将其输出记录在外部文件中。我该如何实现这一点?以下是我的脚本,供参考:
#!/bin/bash
watch -n 1 "amdconfig --odgc" "amdconfig --odgt"
由于我使用了“watch”命令,因此该问题并不重复。
答案1
你真的不想这么做。watch
设计的目的是,嗯,观看。其输出的格式使得重定向不切实际。虽然您实际上可以使用类似 的命令来实现tee
,但输出将包含许多空白行和很少的有用信息。
因此,在特定情况下watch
,您最好编写自己的小脚本来执行相同的操作:
#!/bin/bash
## This is an infinite loop, the script will run until you kill it
while :; do
## Run the command whose output you want to monitor
amdconfig --odgc" "amdconfig --odgt
## Wait for 2 seconds. This mimics what the watch command does
## and also avoids spamming your cpu.
sleep 2
done
将该脚本另存为~/bin/amdwatch
或任何你喜欢的内容,使其可执行(chmod +x ~/bin/amdwatch
),然后将其输出重定向到文件:
~/bin/amdwatch > amdwatch.log
这将运行脚本,直到您手动停止它并amdwatch
每两秒执行一次命令,并将其输出保存到amdwatch.log
。
对于大多数脚本来说,您要查找的是script.sh > outputFile.txt
或script.sh >> outputFile.txt
。请参阅如何将终端输出保存到文件?。
答案2
watch
默认情况下,每次打印到 时都会清除屏幕stdout
。因此我建议您使用while loop
延迟的。然后您可以使用script
命令或tee
记录输出。例如,
while [ 1 ]; do df ; sleep 0.25; done | tee -a MY_FILE
它不仅会显示在屏幕上,还会进入文件,并附加每次运行的命令