/proc/에서 파일 삭제 후 끊어진 링크를 처리하는 방법/fd 디렉토리?

/proc/에서 파일 삭제 후 끊어진 링크를 처리하는 방법/fd 디렉토리?

프로세스에서 대용량 로그 파일을 생성하고 삭제하고 있습니다.

삭제된 많은 파일 /proc/pid/fd에는 디렉토리의 링크가 끊어졌습니다.

프로세스에서 이러한 파일 핸들을 닫아야 합니까? 이렇게 하면 깨진 링크가 표시되지 않습니다. 다음 명령을 사용하여 파일 설명자 수를 계산합니다.

ls /proc/<pid>/fd | wc -l

답변1

프로세스에 파일이 열려 있고 해당 파일이 삭제된 경우 파일이 있는 것입니다. 이는 완전히 정상적인 현상입니다. 끊어진 링크 자체는 문제를 나타내지 않습니다./proc/PID/fd

프로그램이 많은 수의 파일을 열어두었지만 아무 작업도 수행하지 않는 경우 프로그램에 버그가 있음을 나타낼 수 있습니다. 삭제된 파일을 열어두는 것은 몇 가지 용도가 있지만 로그 파일의 경우에는 의미가 없으므로 이러한 파일이 실제로 로그 파일인 경우 프로그램에 버그가 있을 수 있습니다. 이를 수정하려면 프로그램 작성자에게 문의해야 합니다(소스 코드가 있는 경우 직접 수정할 수 있음).

이 프로세스를 통해 조치를 취할 수 없습니다 /proc. 디버거를 프로세스에 연결하고 파일을 닫도록 할 수 있지만 결과는 보장되지 않습니다. 이는 지붕 위로 올라가는 사람의 사다리를 제거하는 것과 같습니다. 넘어져 심각한 부상을 입을 가능성이 높습니다. 디스크 공간을 회수하려면 다음을 통해 파일을 잘라낼 수 있습니다 /proc. 쉘 명령이 이를 수행합니다. 프로그램이 계속해서 파일에 쓰는 경우 디스크 공간을 다시 사용하기 시작합니다. 이를 방지하는 한 가지 방법은 디버거를 사용하여 프로세스를 열린 파일 설명자로 지정하는 것입니다. 하지만 결과는 보장되지 않습니다.: >/proc/PID/fd/NUMBERdup2/dev/null

관련 정보