将脚本输出记录到文件

将脚本输出记录到文件

我写了一个简单的脚本来监控我的 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.txtscript.sh >> outputFile.txt。请参阅如何将终端输出保存到文件?

答案2

watch默认情况下,每次打印到 时都会清除屏幕stdout。因此我建议您使用while loop延迟的。然后您可以使用script 命令或tee记录输出。例如,

while [ 1 ]; do df ; sleep 0.25; done | tee -a MY_FILE

它不仅会显示在屏幕上,还会进入文件,并附加每次运行的命令

相关内容