Armazena saída na memória para gravação posterior no disco

1

Eu tenho o seguinte script que eu uso para registrar a frequência da CPU. Como mencionado no script, eu armazeno temporariamente a saída no arquivo temp.txt e depois leio e copio para o arquivo principal com o número da medição. Este processo é repetido 43200 vezes. Portanto, o arquivo freq_log.txt também é sobrescrito por 43200 vezes!

Minha pergunta: É possível não gravar a saída em um arquivo no disco, mas armazenar na memória (o sistema tem 32 GB de memória) e gravar no disco quando o processo terminar?

Mais uma pergunta. É possível fazer o processo de duas etapas, temp.txt - > freq_log.txt em uma linha com a variável de tempos introduzida com uma tabulação.

#!/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 ----"
    
por ankit7540 29.11.2016 / 14:30

2 respostas

2

Armazene os arquivos em /dev/shm/ , já é um ramdisk baseado em tmpfs.

    
por 29.11.2016 / 14:37
0

Você pode tentar colocar tudo em uma tabela:

logMem=()
for ((i=0;i<2000;i++))
do msg='printf "hello %d\n" $i'
   logMem+=("$msg")
done

Em seguida, escreva tudo:

( for msg in "${logMem[@]}"
do echo "$msg"
done ) > logFile.txt
    
por 29.11.2016 / 17:49