bash Não há espaço no dispositivo

1

No VPS quando pressiono a guia sob meu usuário, obtenho:

bash: cannot create temp file for here-document: No space left on device

mas funciona bem na raiz, o que está acontecendo?

    
por Herokiller 28.08.2015 / 08:22

3 respostas

3

À medida que você pressiona a guia, determinado (s) script (s) específico (s) é / são lançado (s) (vários podem ser definidos, o que é iniciado depende do comando digitado no prompt) .
Esses scripts geralmente usam arquivos temporários em / tmp

O login em que você vê isso ficou sem espaço em / tmp (por exemplo, quota), alternativamente não tem cota, ou o script está (erroneamente?) tentando gravar / manipular dados muito grandes.

Geralmente, o root tem mais cota ou nenhum limite.

sudo -i
cd /tmp
du -h | sort -n | less

deve exibir o que há em / tmp e o espaço que ocupa.

Além disso:

df -h --output=source,target,ipcent,pcent
Filesystem     Mounted on     IUse%  Use%
...

deve, em uma situação "normal", não ter números altos sob as colunas Use%, para / tmp ou tmpfs (o que existe depende da configuração do sistema).

    
por 28.08.2015 / 10:19
0

Verifique como o seu sistema de arquivos está formatado. Configurações típicas que encontrei usaram essas configurações:

  • Format Ext2 (ok, agora um pouco datado e provavelmente ext4)
  • Espaço reservado: 5% .

O último significa que 5% do espaço é reservado para o uid 0.

Se você tiver uma unidade de 200 GB e uma única partição, um usuário normal poderá enchê-la de até 190 GB. Nesse ponto, ela receberá um erro completo no sistema de arquivos. Df reportará 100% em uso.

Se, neste momento, você tentar isso como root, você pode escrever para outros 5%. Df vai mostrar mais de 100% completo.


Agora aplique isso ao seu problema. Um sistema de arquivos que está sendo usado com mais de 100% de capacidade?

    
por 28.08.2015 / 15:30
0

Nós temos pouco com isso hoje, e acabou por ser um problema com os Inodes .

Você deve executar df -i para ver quantos Inodes você está usando. Se o seu IUse% estiver em ou próximo a 100 , você deverá encontrar tantos arquivos pequenos ou de tamanho zero que puder e excluir todos eles.

Você pode encontrar os arquivos com (crédito para o artigo vinculado):

for i in /*; do echo $i; find $i |wc -l; done
    
por 29.04.2016 / 21:28