我有以下脚本用于记录 CPU 频率。正如脚本中提到的,我将输出临时存储在文件中temp.txt
,然后读取它并将其与测量编号一起复制到主文件中。这个过程重复43200次。因此,该文件freq_log.txt
也被覆盖了 43200 次!
我的问题 :是否可以不将输出写入磁盘上的文件中,而是存储在内存中(系统有 32 GB 内存)并在进程完成时写入磁盘?
还有一个问题。是否可以将两步过程,temp.txt
->freq_log.txt
与通过选项卡引入的 times 变量放在一行中。
#!/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 的 ramdisk 了。
答案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