삭제된 파일을 Linux에서 계속 쓸 수 있는 이유

삭제된 파일을 Linux에서 계속 쓸 수 있는 이유

저는 한동안 Linux를 사용해 왔는데 오늘 흥미로운 것을 발견했습니다.

문자열을 파일에 지속적으로 쓰는 무한한 작업이 있다고 가정해 보겠습니다.

어느 시점에서 파일을 삭제했는데 몇 초 안에 다시 생성되었습니다. 놀랍게도 나는 밧줄을 하나도 잃지 않았습니다.

bash 스크립트를 사용하여 테스트한 방법은 다음과 같습니다.

#!/bin/bash

i=0
while :
do
    echo ${i}>>./target
    sleep 1
    i=$((i+1))
done

이 스크립트를 4초 동안 실행하면 , 및 가 포함된 파일 이름 을 얻을 수 target있습니다 0. 그런 다음 파일을 삭제합니다 . 5초 안에 새 파일을 생성합니다 . 놀랍게도 새 파일에서 , , , , 의 내용을 즉시 얻었 습니다 .123targettouch target45678

그러면 파일이 삭제되었을 때 생성된 모든 문자열을 왜 다시 가져올 수 있습니까?

답변1

touch target이 경우 파일이 생성되지 않기 때문입니다 . 쉘 >>연산자는 지정된 파일에 추가하고 필요한 경우 파일을 생성합니다. "3" 이후의 파일을 삭제한 후 echo 4>>./target생성합니다.

파일을 삭제한 후 파일을 나열해 보세요.

rm target; sleep 1; ls -l target

재현된 것을 볼 수 있습니다.

관련 정보