lsof가 열린 파일을 나열할 수 없는 이유는 무엇입니까? 예를 들어, 텍스트 편집기를 사용하여 홈 디렉터리에 있는 파일을 엽니다.
$ gedit ~/.python_history
lsof
루트로도 작동하지 않습니다
$ sudo lsof | grep python_history
아무것도 나열되어 있지 않습니다. 왜?
파일을 편집하는 것과 저장하는 것에는 차이가 없습니다. Python 인터프리터를 실행해도 아무런 차이가 없습니다.
$ lsof | grep gedit
여러 파일이 나열되지만 편집 중인 파일은 나열되지 않습니다.
답변1
Gedit는 파일을 메모리로 읽은 다음 파일 핸들을 닫습니다. 대개:
open("/path/to/your/file", O_RDONLY|O_LARGEFILE|O_NOATIME) = 18
read(18, "blah blah blah"..., 4096) = 305
close(18) = 0
아니면 mmap이나 다른 방법으로요. (정확하게 파일을 읽는 방법은 확실하지 않지만 요점은 파일을 열어두지 않는다는 것입니다.)
그 후에는 변경되었는지 확인하기 위해 계속 폴링합니다. 글을 쓰는 동안 다시 열어보세요.