/proc는 점차적으로 하드 디스크 공간을 소비합니다.

/proc는 점차적으로 하드 디스크 공간을 소비합니다.

centos 7.0을 실행하는 EC2 인스턴스의 하드 디스크 공간은 느리게 소모되며 다시 시작한 후 새로 고쳐집니다.

내용: 기본 OS, Cloudwatch 에이전트, CodeDeploy 에이전트, nginx, 안티 바이러스 MacFee, Java 애플리케이션(로그 파일 제어).

재부팅 전 스크린샷 1: 사용된 디스크 공간75%

이 스크린샷을 바탕으로 가장 공간을 많이 차지하는 파일 10개를 찾았습니다. 맨 위에는 /proc가 있습니다.

여기에 이미지 설명을 입력하세요.

스크린샷 2 재부팅 후: 사용된 디스크 공간9%

사용 중인 파일이 새로 고쳐졌는데 문제가 애플리케이션에 의해 발생했는지 아니면 다른 구성 요소에 의해 발생했는지 확인할 수 없었습니다.

여기에 이미지 설명을 입력하세요.

답변1

출력을 잘못 읽었습니다. 문제의 줄은 사용하도록 요청된 일부 파일을 읽을 수 없기 /proc때문에 오류 메시지입니다 . 이는 해당 파일이 시스템에서 가장 큰 10개의 파일 중 하나임을 나타내지 않습니다. 아무튼 다음과 같이dufind/proc스티브언급한 바와 같이 /proc자체 가상 파일 시스템이며 드라이브의 공간을 차지하지 않습니다.

관련 없는 파일을 나열하지 않으려면 find이 옵션을 사용하여 파일 시스템 경계를 넘지 않도록 지시 할 수 있습니다 -xdev.

문제를 일으키는 것으로 보이는 파일은 다음 /var/log/awslogs.log과 같습니다 /var/log/awslogs.1. 첫 번째 명령은 해당 파일을 시스템에서 가장 큰 두 개의 파일로 나열하고 두 번째 명령의 출력에는 표시되지 않습니다(또는 오히려 더 작습니다. awslogs.log.1더 자세히 이해합니다). 목록).

답변2

이는 stdout을 파이프하고 stderr을 억제하지 않을 때 발생하는 현상입니다.

작업을 완료하기 전에 전체 입력 버퍼를 가져야 하기 때문에(분명히) sort검색이 완료될 때까지 실제로 출력이 전달되기 시작하지 않습니다.headfind

그러나 stderr를 억제하지 않기 때문에 파일 du을 보고 시작하는 사이에 존재하지 않는 파일에 대해 오류가 보고되고 이러한 오류 메시지는 파일이 발생할 때 보고됩니다(stderr은 버퍼링되지 않기 때문입니다).finddu

정렬 및 헤더 파이프 없이 find 명령을 실행하면 어떤 일이 발생하는지 확인할 수 있습니다.

관련 정보