CPU周波数を記録するための次のスクリプトがあります。スクリプトで説明されているように、出力を一時的にファイルに保存し、temp.txt
それを読み、測定番号とともにデフォルトファイルにコピーします。このプロセスは43,200回繰り返されます。したがって、ファイルもfreq_log.txt
43,200回上書きされました!
私の質問:出力をディスク上のファイルに書き込むことなくメモリ(システムのメモリは32GB)に保存し、プロセスが完了したらディスクに書き込むことは可能ですか?
まだ質問があります。タブを介して導入された時間変数を使用してtemp.txt
- >2段階のプロセスを1行に配置できますか?freq_log.txt
#!/bin/bash
# Log freq.
echo "Logging started.";
times=0 #counter variable
rm t_log.txt
while [ $times -lt 43200 ]; do # run for ~60 hrs
lscpu | grep "CPU MHz" >> temp.txt #log data in temp.txt
let times=times+1
sleep 5
echo -e "$(cat temp.txt)""\t$times" >> freq_log.txt #add new line on file
rm temp.txt
done
echo "---- finished ----"
答え1
/dev/shm/
すでにtmpfsベースのRAMディスクにファイルを保存します。
答え2
すべてをテーブルに入れることができます。
logMem=()
for ((i=0;i<2000;i++))
do msg=`printf "hello %d\n" $i`
logMem+=("$msg")
done
その後、すべてを書き留めます。
( for msg in "${logMem[@]}"
do echo "$msg"
done ) > logFile.txt