Articles
find: can fork: Speicher kann nicht zugeordnet werden
On November 18, 2020 by adminIch möchte jeweils 1 Datei aus meinem Verzeichnis löschen, das so viele Dateien enthält, dass ich 1 entfernen möchte Datei zu einem Zeitpunkt. Nur um zu viele Lesevorgänge zu vermeiden und bei zu vielen Argumenten fehlgeschlagen zu sein.
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
Ich möchte nicht rekursiv aus einem untergeordneten Verzeichnis löschen, weshalb -maxdepth 1. Hilfe und Anregungen?
Kommentare
- ' ist seltsam, dass Sie ' erhält diesen Gabelfehler, aber
-delete
anstelle von-exec rm {} \;
sollte ihn lösen. Ansonsten bewegen Sie einfach-maxdepht 1
vor-name
. ' Vergessen Sie nicht, ohne zuerst. - Die
-exec ... '{}' \+
-Form vonfind
spart möglicherweise Gabeln, da diesxargs
in (modernen) Versionen vonfind
. - @thrig Es werden aufeinanderfolgende Gabeln gespeichert , was ' bei einem Prozesslimit nicht wirklich hilft.
- Haben Sie strenge Limits für Ihr Konto? Was Betriebssystem und Distribution läuft das System? Führen Sie viele andere Prozesse aus?
- Ja, es ist eine Produktionsumgebung. Auf einem System werden so viele Prozesse ausgeführt.
Antwort
Die cannot fork
wird möglicherweise angezeigt, wenn der Auslagerungsbereich voll ist. Das tmpfs
-Dateisystem, das (wahrscheinlich) auf /tmp
bereitgestellt ist, verfügt möglicherweise nicht über den erforderlichen Speicherplatz, damit der Kernel neue Prozesse erstellen kann.
Überprüfen Sie mit df -h /tmp
, ob /tmp
noch Platz hat. Wenn es voll ist, versuchen Sie zuerst, /tmp
zu bereinigen.
Kommentare
- Swap und tmpfs nicht verwandt, außer dass sie beide Teilmengen des verfügbaren Speichers sind. Platz in
/tmp
ist nicht erforderlich, um neue Prozesse zu erstellen. Speicherplatz ist vorhanden, aber die Menge ist so gering, dass das Entfernen von Elementen in/tmp
sehr unwahrscheinlich ist, dass eine Gabelung möglich ist. - / tmp ist nicht einmal in der Nähe voll.
- @Gilles, unter Solaris
/tmp
ist aktuelltmpfs
und wenn es vollständig ist (+ 100%) Bei Verwendung erhalten Sieunable to fork; not enough space
Nachrichten. Die Nachrichten, die das OP erhält, sindcannot fork; unable to allocate memory
. Entschuldigung, dass ich eine Solaris-Lösung vorgeschlagen und nicht zuerst nach dem Betriebssystem gefragt habe. Das OP überprüft möglicherweise die Werte vonulimit -a
undulimit -aH
, um festzustellen, ob während dieses Vorgangs ein Speicherlimit erreicht werden kann. Es lohnt sich auch, unter/etc/security/limits.conf
nachzuschauen, ob einige Grenzwerte festgelegt sind. - Ich hatte das gleiche Problem mit viel verfügbarem Speicherplatz in / tmp. aber kein Swap aktiviert. [code] swapon / dev / sdXn [/ code] hat das Problem behoben.
Schreibe einen Kommentar