임시 파일 관리, $ mktemp, temp

markyang92·2021년 10월 2일
0

linux (ubuntu/debian)

목록 보기
27/36
post-thumbnail
post-custom-banner

임시 파일 관리

  • 임시 파일을 사용해야할 '때'도 있다. (분명..)
    • 가령 subshell로 실행한 bg는 wait로 기다릴 수 없기 때문에, 임시 파일에 실행해야할 커맨드들을 쓰고 읽어서 child process를 만들거나...

$ mktemp: 임시 파일 간단 생성

$ mktemp
  1. 임시 파일을 /tmp/tmp.XXXXXX로 생성하고 STDOUT으로 Path를 출력해준다.

$ mktemp Path: 지정된 위치에 임시파일 생성

$ mktemp $(pwd -P)/hello.XXXX
  • arg로 오는 Path 절대경로X에는 랜덤값을 넣어 임시파일 생성 후, 그 경로를 STDOUT에 출력

  • 활용
TMPFILE1=$(mktemp /tmp/im1.XXXXX)
TMPFILE2=$(mktemp /tmp/im2.XXXXX)
  • XXX 문자를 사용하면 알아서 채워주고 만들어준 후, STDOUT으로 그 이름을 출력한다.

  • 2초 동안 인터럽트비교
#!/bin/bash

TMPFILE1=$(mktemp /tmp/interrupt1.XXXXX)
TMPFILE2=$(mktemp /tmp/interrupt2.XXXXX)

cat /proc/interrupts > ${TMPFILE1}
sleep 2
cat /proc/interrupts > ${TMPFILE2}
diff ${TMPFILE1} ${TMPFILE2}
rm -f ${TMPFILE1} ${TMPFILE2}

  • 스크립트가 중단 될 경우, 임시 파일들만 남겨질 수 있다.
    • 위 예제에서 cat 명령 전에 Ctrl + C를 누르면, 임시 파일들은 /tmp에 고스란히 남는다.
    • trap을 사용하여 Ctrl + C 시그널을 잡아 시그널 핸들러를 생성하고, 임시 파일들을 삭제하도록 해보자.
#!/bin/bash
trap "rm -f ${TMPFILE1} ${TMPFILE2}; exit 1" INT
profile
pllpokko@alumni.kaist.ac.kr
post-custom-banner

0개의 댓글