그래서 KDE를 사용하여 Debian 9.1을 새로 설치하고 있는데 일부 도구에서는 이러한 파일이 제거되었지만 여전히 사용되고 있음을 보여줍니다.
- memfd:펄스오디오(펄사우디)
- memfd:xshmfence(Xorg)
- /tmp/ibAbCdEf(mysqld)
- [위에 /tmp/s가 4개 더 있습니다]
이것은 새로 설치한 것이며 지금까지 어떤 패키지도 다운로드하지 않았으며 일부 사소한 구성만 다운로드했습니다. 왜 제거되었으나 여전히 사용됩니까? 완전히 삭제할 수 있나요? 이게 고장난 부분이 있나요? 다른 사람도 이런 걸 갖고 있나요? 제거할 수 있거나 제거해야 하는 경우: 어떻게?
관련된 이전 질문:"디스크에서 제거되었지만 파일 핸들이 닫히지 않은 데비안에서 파일을 찾아 삭제하는 방법은 무엇입니까?"
답변1
삭제된 파일 이름에 파일 핸들을 사용하는 것은 합법적인 파일 액세스 방법입니다. 이는 이제 파일 핸들로만 열리는 파일에 (쉽게) 액세스하거나 상호 작용할 수 없도록 하는 데 도움이 됩니다. 그러나 이러한 임시 파일을 생성하는 코드를 이해하지 않으면 이 사용 사례를 oops-deleted-but-open 버그와 구별하는 것이 불가능합니다. 즉, 삭제되었지만 열려 있는 파일은 완전히 합법적일 수 있습니다.
진주파일::임시 파일예를 들어 모듈은 임시 파일의 링크를 해제합니다.기본적으로파일 이름이 아닌 파일 핸들만 요청하는 경우:
$ perl -MFile::Temp=tempfile -e 'my$fh=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67001
$ lsof | grep qqqq
perl5.24 67001 jdoe 3u REG 1,2 0 65834304 /Users/jdoe/qqqq4mnuKXT3fS
$ file /Users/jdoe/qqqq4mnuKXT3fS
/Users/jdoe/qqqq4mnuKXT3fS: cannot open `/Users/jdoe/qqqq4mnuKXT3fS' (No such file or directory)
$ fg
perl -MFile::Temp=tempfi
^C
$
이제 파일 이름을 요청한 후 파일이 자동으로 연결 해제되지 않습니다.
$ perl -MFile::Temp=tempfile -e 'my($fh,$name)=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67012
$ lsof | grep qqqq
perl5.24 67012 jdoe 3u REG 1,2 0 65834307 /Users/jdoe/qqqqEvy9FFVnLQ
$ file /Users/jdoe/qqqqEvy9FFVnLQ
/Users/jdoe/qqqqEvy9FFVnLQ: empty
$