Articles
find: kan ikke fork: Kan ikke allokere hukommelse
On november 18, 2020 by adminJeg vil slette 1 fil ad gangen fra min mappe, der indeholder så mange filer, så jeg vil fjerne 1 fil ad gangen. Bare for at undgå for mange læsninger og mislykkedes ved for mange argumenter.
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
Jeg vil ikke slette rekursivt fra en underordnet mappe, hvorfor -maxdepth 1. Har du hjælp og forslag?
Kommentarer
Svar
cannot fork
-meddelelsen vises muligvis, når bytteområdet er fuldt. tmpfs
filsystemet (sandsynligvis) monteret på /tmp
har muligvis ikke den nødvendige plads til kernen til at oprette nye processer.
Kontroller, om /tmp
stadig har plads ved hjælp af df -h /tmp
. Hvis det er fyldt, skal du prøve at rydde op /tmp
først.
Kommentarer
- Byt og tmpfs er ikke relaterede, bortset fra at de begge er delmængder af tilgængelig hukommelse. Værelse i
/tmp
er ikke nødvendigt for at oprette nye processer. Rum i hukommelsen er, men mængden er så lille, at det er meget usandsynligt, at det at fjerne ting i/tmp
muliggør en gaffel. - / tmp er ikke engang tæt på fuld.
- @Gilles, On Solaris
/tmp
er faktisktmpfs
og når det er helt (+ 100%) udnyttet får duunable to fork; not enough space
beskeder. Beskederne, som OP får, ercannot fork; unable to allocate memory
. Undskyld, at jeg foreslog en Solaris-løsning og ikke bad om operativsystemet først. OP kontrollerer muligvis værdierne forulimit -a
ogulimit -aH
for at se, om der er en hukommelsesgrænse, der kan blive ramt under denne proces. Det er også værd at prøve at se på/etc/security/limits.conf
for at se, om der er sat nogle grænser. - Jeg har haft det samme problem med masser af plads i / tmp til rådighed, men ingen swap aktiveret. [code] swapon / dev / sdXn [/ code] løste problemet.
-delete
i stedet for-exec rm {} \;
skal løse det. Bortset fra det skal du bare flytte-maxdepht 1
før-name
. Don ' t glemme at teste uden-delete
først.-exec ... '{}' \+
form affind
sparer muligvis på gafler, da dette efterlignerxargs
i (moderne) versioner affind
.