Articles
hitta: kan inte gaffla: Kan inte tilldela minne
On november 18, 2020 by adminJag vill ta bort en fil i taget från min katalog som innehåller så många filer, så jag vill ta bort 1 fil åt gången. Bara för att undvika för många läsningar och misslyckades med för många argument.
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
Jag vill inte ta bort rekursivt från en underkatalog det är därför -maxdepth 1. Någon hjälp och förslag?
Kommentarer
Svar
cannot fork
-meddelandet kan visas när växlingsområdet är fullt. tmpfs
filsystem (troligtvis) monterat på /tmp
kanske inte har tillräckligt utrymme för kärnan för att skapa nya processer.
Kontrollera om /tmp
fortfarande har plats med df -h /tmp
. Om det är fullt, försök att rensa /tmp
först.
Kommentarer
- Byt och tmpfs är inte relaterade förutom att de båda är delmängder av tillgängligt minne. Rum i
/tmp
är inte nödvändigt för att skapa nya processer. Rum i minnet är, men mängden är så liten att det är mycket osannolikt att det går mycket att ta bort saker i/tmp
. - / tmp är inte ens nära fullt.
- @Gilles, On Solaris
/tmp
är faktiskttmpfs
och när det är helt (+ 100%) används får duunable to fork; not enough space
meddelanden. Meddelandena som OP får ärcannot fork; unable to allocate memory
. Ber om ursäkt för att jag föreslog en Solaris-lösning och inte bad om operativsystemet först. OP: n kan kontrollera värdena förulimit -a
ochulimit -aH
för att se om det finns en minnesgräns som kan träffas under denna process. Det är också värt att försöka titta på/etc/security/limits.conf
för att se om några gränser är inställda. - Jag har haft samma problem med mycket utrymme i / tmp tillgängligt, men inget byte aktiverat. [code] swapon / dev / sdXn [/ code] löste problemet.
-delete
istället för-exec rm {} \;
borde lösa det. Förutom det, flytta bara-maxdepht 1
före-name
. Glöm inte att ' testa utan-delete
först.-exec ... '{}' \+
form avfind
kan spara på gafflar, eftersom detta emulerarxargs
i (moderna) versioner avfind
.