명령을 사용하여 많은 수의 파일(수백만 개)을 삭제하려고 하는데 find . -name "file*" -delete
터미널 Killed
에 온라인으로 검색한 결과 dmesg가 표시됩니다.
Out of memory: Kill process 25284 (find) score 691 or sacrifice child
Killed process 25284, UID 0, (find) total-vm:11666436kB, anon-rss:3229204kB, file-rss:620kB
/proc/sys/vm/overcommit_memory
그림에서 볼 수 있듯이 Overuse가 0으로 설정되어 있는 것을 보면 이는 OOM killer 때문인 것 같습니다 . 이 문제를 피하는 방법을 알고 싶습니다. 이 파일을 수동으로 삭제할 수는 없습니다.
답변1
프로세스는 메모리를 과도하게 사용하지 않으며 실제로 소비하는 메모리는 거의 3GB(anon-rss)이므로 OOM이 합법적입니다.
정규식 삭제 명령을 사용해 보십시오. 동일한 동작이 표시된다면 아마도 여기에 있는 파일 수 때문일 것입니다.https://superuser.com/questions/1174259/high-memory-usage-of-the-find-command삭제할 파일을 모두 나열하고 Shell/Perl 스크립트를 통해 하나씩 삭제를 실행하는 것이 좋습니다.