Articles
찾기 : 포크 할 수 없음 : 메모리를 할당 할 수 없음
On 11월 18, 2020 by admin파일이 너무 많은 디렉토리에서 한 번에 1 개의 파일을 삭제하고 싶습니다. 1 개를 제거하고 싶습니다. 한 번에 파일. 너무 많은 읽기를 피하고 너무 많은 인수에 실패했습니다.
find ./Backup/ -name "*.csv" -maxdepth 1 -exec rm {} \; find: warning: you have specified the -maxdepth option after a non-option argument -name, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments. find: cannot fork: Cannot allocate memory
자식 디렉토리에서 재귀 적으로 삭제하고 싶지 않기 때문에 -maxdepth 1입니다. 도움이나 제안이 있으십니까?
댓글
답변
cannot fork
메시지는 스왑 영역이 가득 차면 나타날 수 있습니다. /tmp
에 마운트 된 tmpfs
파일 시스템 (아마도)에 커널이 새 프로세스를 만드는 데 필요한 공간이 없을 수 있습니다.
/tmp
에 df -h /tmp
를 사용하여 아직 공간이 있는지 확인합니다. 가득 찬 경우 먼저 /tmp
정리를 시도하십시오.
댓글
- 스왑 및 tmpfs는 그렇지 않습니다. 둘 다 사용 가능한 메모리의 하위 집합이라는 점을 제외하고는 관련이 있습니다.
/tmp
의 공간은 새 프로세스를 만드는 데 필요하지 않습니다. 메모리 공간은 있지만 양이 너무 작아/tmp
에서 항목을 제거해도 포크가 가능하지 않을 것입니다. - / tmp는 full.
- @Gilles, Solaris에서
/tmp
는 실제tmpfs
이며 완전히 (+ 100 %) 사용하면unable to fork; not enough space
메시지를 받게됩니다. OP가받는 메시지는cannot fork; unable to allocate memory
입니다. 솔라리스 솔루션을 제안했고 OS를 먼저 묻지 않은 것에 대해 사과드립니다. OP는ulimit -a
및ulimit -aH
의 값을 확인하여이 프로세스 중에 도달 할 수있는 메모리 제한이 있는지 확인할 수 있습니다. 일부 제한이 설정되어 있는지 확인하기 위해/etc/security/limits.conf
를 살펴볼 가치가 있습니다. - 사용 가능한 / tmp에 많은 공간이있는 동일한 문제가 있습니다. 그러나 스왑이 활성화되지 않았습니다. [code] swapon / dev / sdXn [/ code]이 문제를 해결했습니다.
-exec rm {} \;
대신-delete
가 문제를 해결해야합니다. 그 외에는-maxdepht 1
-name
이전입니다. ' 먼저.find
의-exec ... '{}' \+
형식은xargs
(최신 버전의find
)