Articles
Forma
@thrig Ukládá po sobě jdoucí vidličky , což ' opravdu nepomůže s omezením procesu.
Máte ve svém účtu přísné limity? Co operační systém a distribuce běží systém? Spouštíte spoustu dalších procesů?
Ano, je to produkční prostředí. V systému běží tolik procesů.
find: cannot fork: Cannot allocate memory
On 18 listopadu, 2020 by adminChci smazat 1 soubor najednou ze svého adresáře, který obsahuje tolik souborů, takže chci odstranit 1 soubor najednou. Abychom se vyhnuli příliš velkému počtu přečtení a neúspěchu příliš mnoha 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
Nechci rekurzivně mazat z podřízeného adresáře, proto -maxdepth 1. Nějaká pomoc a návrh?
Komentáře
před -name
. Nezapomeňte testovat bez -delete
první.
-exec ... '{}' \+
find
může na forcích ušetřit, protože to emuluje xargs
v (moderních) verzích find
. Odpovědět
cannot fork
zpráva se může zobrazit, když je oblast swapu plná. Souborový systém tmpfs
(pravděpodobně) namontovaný na /tmp
nemusí mít pro jádro dostatek místa pro vytváření nových procesů.
Pomocí df -h /tmp
zkontrolujte, zda má /tmp
stále pokoj. Pokud je plná, zkuste nejprve vyčistit /tmp
.
Komentáře
- Swap a tmpfs nejsou související kromě toho, že jsou obě podmnožinami dostupné paměti. Místnost v
/tmp
není pro vytváření nových procesů nutná. Místnost v paměti je, ale její množství je tak malé, že odstraňování věcí v/tmp
je velmi nepravděpodobné, že by byla vidlice možná. - / tmp není ani zdaleka tak blízko plné.
- @Gilles, On Solaris
/tmp
je aktuálnítmpfs
a když je úplně (+ 100%) využijete, budete dostávatunable to fork; not enough space
zprávy. Zprávy, které OP obdrží, jsoucannot fork; unable to allocate memory
. Omlouvám se, že jsem navrhl řešení Solaris a nejprve jsem nepožádal o OS. OP může zkontrolovat hodnotyulimit -a
aulimit -aH
, aby zjistil, zda existuje limit paměti, který může být během tohoto procesu zasažen. Rovněž stojí za to vyzkoušet/etc/security/limits.conf
, zda jsou nastaveny nějaké limity. - Měl jsem stejný problém se spoustou místa v / tmp, ale není aktivován žádný swap. [code] swapon / dev / sdXn [/ code] problém vyřešil.
-delete
místo-exec rm {} \;
by to mělo vyřešit. div id = „72e8038d2e“>