Articles
encontrar: não é possível bifurcar: não é possível alocar memória
On Novembro 18, 2020 by adminDesejo excluir 1 arquivo de cada vez do meu diretório que contém tantos arquivos, então desejo remover 1 arquivo de cada vez. Apenas para evitar muitas leituras e falhas em muitos argumentos.
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
Não quero excluir recursivamente de um diretório filho, por isso -maxdepth 1. Alguma ajuda e sugestão?
Comentários
Resposta
O cannot fork
a mensagem pode aparecer quando a área de troca está cheia. O tmpfs
sistema de arquivos (provavelmente) montado em /tmp
pode não ter o espaço necessário para o kernel criar novos processos.
Verifique se /tmp
ainda tem espaço usando df -h /tmp
. Se estiver cheio, tente limpar /tmp
primeiro.
Comentários
- Troca e tmpfs não são relacionados, exceto por serem ambos subconjuntos de memória disponível. Não é necessária sala em
/tmp
para criar novos processos. Há espaço na memória, mas a quantidade é tão pequena que remover coisas em/tmp
dificilmente tornará possível uma bifurcação. - / tmp não está nem perto de cheio.
- @Gilles, No Solaris
/tmp
é realtmpfs
e quando está completamente (+ 100%) utilizado, você obteráunable to fork; not enough space
mensagens. As mensagens que o OP obtém sãocannot fork; unable to allocate memory
. Peço desculpas por ter sugerido uma solução Solaris e não ter pedido o sistema operacional primeiro. O OP pode verificar os valores deulimit -a
eulimit -aH
para ver se há um limite de memória que pode ser atingido durante este processo. Também vale a pena tentar dar uma olhada em/etc/security/limits.conf
para ver se alguns limites estão definidos. - Tive o mesmo problema com muito espaço disponível em / tmp, mas nenhuma troca ativada. [code] swapon / dev / sdXn [/ code] resolveu o problema.
-delete
em vez de-exec rm {} \;
deve resolvê-lo. Fora isso, basta mover-maxdepht 1
antes de-name
. Não ' não se esqueça de testar sem-delete
primeiro.-exec ... '{}' \+
forma defind
pode economizar em garfos, pois isso emulaxargs
em versões (modernas) defind
.