Articles
find: cannot fork: Impossible dallouer de la mémoire
On novembre 18, 2020 by adminJe veux supprimer 1 fichier à la fois de mon répertoire qui contient autant de fichiers, donc je veux supprimer 1 fichier à la fois. Juste pour éviter trop de lectures et échouer avec trop darguments.
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
Je ne veux pas supprimer récursivement dun répertoire enfant, cest pourquoi -maxdepth 1. Avez-vous de laide et des suggestions?
Commentaires
Réponse
Le cannot fork
peut apparaître lorsque la zone déchange est pleine. Le système de fichiers tmpfs
(probablement) monté sur /tmp
peut ne pas avoir lespace nécessaire pour que le noyau crée de nouveaux processus.
Vérifiez si /tmp
a encore de la place en utilisant df -h /tmp
. Sil est plein, essayez de nettoyer /tmp
dabord.
Commentaires
- Swap et tmpfs ne le sont pas liés sauf en ce quils sont tous deux des sous-ensembles de mémoire disponible. Lespace dans
/tmp
nest pas nécessaire pour créer de nouveaux processus. Il y a de la place en mémoire, mais la quantité est si petite que supprimer des éléments dans/tmp
est très peu susceptible de rendre un fork possible. - / tmp nest même pas proche de plein.
- @Gilles, Sur Solaris
/tmp
est réeltmpfs
et quand il est complètement (+ 100%) utilisé, vous obtiendrez des messagesunable to fork; not enough space
. Les messages que lOP obtient sontcannot fork; unable to allocate memory
. Toutes mes excuses pour avoir suggéré une solution Solaris et ne pas avoir demandé le système dexploitation en premier. LOP peut vérifier les valeurs deulimit -a
etulimit -aH
pour voir sil y a une limite de mémoire qui peut être atteinte pendant ce processus. Cela vaut également la peine dessayer de regarder/etc/security/limits.conf
pour voir si certaines limites sont fixées. - Jai eu le même problème avec beaucoup despace disponible dans / tmp, mais pas de swap activé. [code] swapon / dev / sdXn [/ code] a résolu le problème.
-delete
au lieu de-exec rm {} \;
devrait le résoudre. À part cela, déplacez simplement-maxdepht 1
avant-name
. Ne ' t oublier de tester sans-delete
dabord.-exec ... '{}' \+
defind
peut économiser sur les fourches, car elle émulexargs
dans les versions (modernes) defind
.