삭제 프로세스를 종료하면 메모리 캐시를 정리하는 데 도움이 될 수 있는지 알고 싶습니다. 때로는 lsof에서 삭제된 파일을 많이 가져오므로 해당 프로세스를 종료하면 더 많은 여유 메모리를 제공할 수 있습니까?
예:
lsof | grep delete
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/42/gvfs
Output information may be incomplete.
cupsd 1619 root 10r REG 253,0 2979 38250477 /etc/passwd+ (deleted)
gnome-set 5731 gdm 14r REG 253,0 65536 51102558 /etc/pki/nssdb/cert8.db;5c644c01 (deleted)
gnome-set 5731 gdm 16r REG 253,0 16384 51197440 /etc/pki/nssdb/key3.db;5c644c01 (deleted)
pool 5731 5795 gdm 14r REG 253,0 65536 51102558 /etc/pki/nssdb/cert8.db;5c644c01 (deleted)
kill 1619
삭제된 프로세스가 메모리를 소비할지 걱정됩니다.
우리는 또한 다음을 볼 수 있습니다:
lsof | grep deleted | wc -l
3421
답변1
종종 프로세스는 명시적으로 파일을 생성하고 열고 직접 삭제하여 파일 작업을 더 안전하게 만들고 프로세스가 끝나면 파일이 삭제되도록 합니다.
간단히 말해서 이것은 특히 귀하의 질문에 표시되는 파일의 기능입니다. 이러한 프로세스를 종료하면 시스템 작동이 중단됩니다.
어떤 경우에는 삭제된 파일이 계속 열려 있는 것이 버그일 수 있습니다. 예를 들어 프로세스가 로그 파일에 쓰고 있지만 로그 파일을 다시 열라는 신호를 프로세스에 보내지 않고 로그 파일이 압축되고 삭제됩니다. 파일 시스템을 통해 이러한 파일을 자를 수 있습니다 /proc/
. 위에 표시된 대로 파일 설명자 번호를 찾은 lsof
다음 > /proc/12345/fd/123
파일을 자릅니다(12345는 프로세스 ID이고 123은 파일 설명자 번호입니다. 그러나 이는 거의 필요하지 않습니다.
프로세스는 삭제되지 않았으며 해당 파일을 참조하는 디렉터리 항목만 삭제되었습니다.
답변2
사용하는 소프트웨어/솔루션에 따라 알려지거나 허용되는 기준선을 정의해야 합니다.
시간이 지남에 따라 상당한 속도로 증가하지 않는 경우 삭제된 파일이 시스템에 아직 열려 있거나 존재하는 것에 집착하지 않을 것입니다. 이제 시스템/VM의 정상적인 기준에서 상당한 편차가 있는 경우 걱정해야 할 사항이 있을 수 있습니다.
우리는 최근 일부 소프트웨어 공급업체에 공통적으로 적용되는 시스템에서 약 20~50,000개의 삭제된 파일이 기준에서 벗어나는 것을 발견했습니다. lsof를 완료하는 데 약 5분이 걸렸고 디스크 공간이 부족했습니다.
결국 우리는 공급업체가 임시 파일을 열고 삭제하는 일부 Java 루틴을 개발했음이 틀림없다는 사실을 알게 되었습니다.아니요닫으세요. 우리는 공급업체에 버그를 제출하고 의심스러운 파일을 식별했으며 공급업체는 코드를 수정했습니다. 또한 이 솔루션은 대용량 데이터 파티션이 있는 Linux에서 열린 파일 제한에 도달할 수 있음을 고객과 공급업체에 지적합니다.