GPUのクロックと温度を監視する簡単なスクリプトを書きました。ターミナルで表示される以外に、その出力を外部ファイルに記録することを望みました。どうすればこれを達成できますか?参照用の以下の私のスクリプト:
#!/bin/bash
watch -n 1 "amdconfig --odgc" "amdconfig --odgt"
「ウォッチ」コマンドを使用しているため、質問は重複していません。
あなたは本当にそれをしたくありません。 watch
は、ええと、watchedとなるように設計されています。その出力は、リダイレクトを非実用的にするような方法でフォーマットされます。 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
手動で停止するまでスクリプトが実行され、2秒ごとにamdwatch
コマンドが実行され、その出力がamdwatch.log
に保存されます。
ほとんどのスクリプトで、探しているのはscript.sh > outputFile.txt
またはscript.sh >> outputFile.txt
です。 端末出力をファイルに保存する方法 を参照してください。
watch
は、デフォルトでstdout
に出力するたびに画面をクリアします。そのため、while loop
を遅延させて使用することをお勧めします。次に、script
コマンドまたはtee
を使用して、出力をログに記録できます。例えば、
while [ 1 ]; do df ; sleep 0.25; done | tee -a MY_FILE
両方が画面に表示され、ファイルに移動して、コマンドの各実行を追加します