sshd가 내 /dev/zero를 삭제한 이유는 무엇입니까?

sshd가 내 /dev/zero를 삭제한 이유는 무엇입니까?

이렇게 하면 lsof +c 0 | grep /dev/zero다음 두 줄이 표시됩니다.

sshd    19064    root  DEL    REG    0,4    497862    /dev/zero
sshd    19064    root  DEL    REG    0,4    498725    /dev/zero

이것키워드는 제가 관심을 갖는 것입니다. 매뉴얼 페이지에서 의미하는 바는 다음과 같습니다.

삭제된 Linux 매핑 파일의 경우

하지만 마지막으로 확인했을 때 재부팅 /dev/zero해도 여전히 그대로 남아 있었습니다. 왜 그럴까요?SSHD이 캐릭터 장치를 제거하려고 하는데 다음과 같은 이유로 성공하는 이유는 무엇입니까?

  • 파일이 아닌 캐릭터 장치입니다.
  • 루트가 소유하고 있습니다.

운영 체제 정보: Linux localhost 3.4.103 #1 SMP PREEMPT Thu Dec 18 13:07:12 CST 2014 armv7l GNU/Linux (아키텍처 리눅스)

답변1

DEL나타내지 않는다그 과정삭제되었지만 /dev/zero프로세스가 사용 중이고 /dev/zero사용 중인 인스턴스가 /dev/zero삭제되었습니다. 예를 들어 and를 some-command사용하는 명령이 있다고 가정 /some/file해 보겠습니다.

$ some-command &
$ rm /some/file
$ touch /some/file

그러면 lsof다음 /some/file과 같습니다:

some-command    ...    ...  DEL    ...    ...    ...    /some/file

삭제된 파일의 내용은 프로세스가 해제되거나 종료될 때까지 디스크에 남아 있지만 직접 액세스할 수는 없습니다.

/some/file내가 만든 버전이 사용 중인 버전 touch이 아닙니다 .some-command

관련 정보