将输出存储在内存中以便稍后写入磁盘

将输出存储在内存中以便稍后写入磁盘

我有以下脚本用于记录 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

相关内容