[Shell Script] 이중 실행이 가능한 임시파일 만들기

 이중 실행이 가능한 임시파일 만들기 



스크립트를 동시에 실행할 때 임시파일이 중복되지 않도록 할때 사용하는 스크립트 입니다. 

스크립트 코드
#/bin/sh

tmpfile="tmp.$$"    #1

date > $tmpfile     #2
sleep 10


cat $tmpfile        #3
rm -f $tmpfile


실행 결과






  • 프로그램에서 잠시 사용하는 임시파일을 다루는 스크립트 입니다 . 
  • 스크립트 실행 시 date 명령어로 현재 시각을 임시 파일에 쓰고 10초 기다린 후 그값을 파일에서 읽어서 출력합니다 . 
  • 이 스크립트 코드에서는 셸 변수 tmpfile 로 지정한 임시 파일명을 프로세스 id($$)로 생성하는 것입니다 . 


tmpfile.txt 라는 고정 파일명으로 임시 파일을 만들면 실행된 프로세스에서 값을 덮어씁니다 . 


이런 일을 방지하기 위해 같은 스크립트를 실행하더라도 각각 프로세스가 다른 이름으로 임시파일을 만들어야 합니다 . 


코드 설명

#1 : $$은 셸의 특수 변수로서 실행하는 셀 프로세스 ID 가 값입니다 . 
      이를 이용하여 임시 파일의 파일명에 프로세스 ID 를 사용합니다 .

tmpfile="tmp.$$"    #1


#2 :   이 임시 파일에 date 명령어 결과를 출력해서 현재 시각을 저장합니다 . 

date > $tmpfile     #2
sleep 10

#3 : 임시 파일의 내용을 출력해도 중복 실행된 프로세스 사이에 영향을 받지 않습니다 . 

cat $tmpfile        #3
rm -f $tmpfile