나중에 디스크에 쓰기 위해 출력을 메모리에 저장

나중에 디스크에 쓰기 위해 출력을 메모리에 저장

CPU 주파수를 기록하기 위한 다음 스크립트가 있습니다. 스크립트에서 언급한 대로 출력을 임시로 파일에 저장한 temp.txt다음 이를 읽고 측정 번호와 함께 기본 파일에 복사합니다. 이 과정은 43,200번 반복됩니다. 따라서 파일 freq_log.txt도 43,200번 덮어썼습니다!

내 질문:출력을 디스크의 파일에 쓰지 않고 메모리(시스템의 메모리는 32GB)에 저장하고 프로세스가 완료되면 디스크에 쓰는 것이 가능합니까?

아직 질문이 있습니다. 탭을 통해 도입된 시간 변수를 사용하여 temp.txt-> 2단계 프로세스를 한 줄에 넣을 수 있습니까 ?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 기반 램디스크인 에 파일을 저장합니다 .

답변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

관련 정보