fork: tente novamente: recurso temporariamente indisponível


31

Enquanto estou me conectando ao meu servidor,

-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

E eu tento seguir os comandos também, então o resultado é o mesmo.

-bash-4.1$ df -h
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 
-bash-4.1$ ls -lrth
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Interrupted system call
-bash-4.1$ 
-bash-4.1$ ps -aef | grep `pwd`
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 

Por que essa vinda? E como posso resolver isso?


2
Looks como troca está sendo sobrecarregado (/ tmp sistema de arquivos possivelmente completo)
Lambert

2
ulimit -a, talvez você acertar algum limite processo
c4f4t0r

Respostas:


20

Isso pode ser devido a algum limite de recurso, seja no próprio servidor (ou) específico da sua conta de usuário. Os limites do seu shell podem ser verificados via ulimit -a. Esp, verifique o ulimit -umáximo de processos do usuário; se você alcançou o máximo de processos, o fork não poderá criar nenhum novo e falhar com esse erro. Isso também pode ocorrer devido a um problema de recurso de troca / memória


9

fork: recurso temporariamente indisponível

O erro significa que o recurso atual do shell é limitado (verifique os limites com ulimit -a). Portanto, você pode tentar em outro shell ou aumentar os recursos usando o ulimitcomando que controla os recursos disponíveis para o shell e os processos que ele cria no sistema operacional.

Para aumentar os limites, tente executar:

ulimit -Sn unlimited && ulimit -Sl unlimited

elevar os limites flexíveis para os difíceis, ou:

ulimit -l unlimited
ulimit -n 10240 

para definir o tamanho máximo de um processo como ilimitado e o número máximo de arquivos abertos como 10240.

Veja: help ulimitpara mais informações.

Para torná-lo persistente, adicione as configurações acima nos arquivos rc de inicialização (por exemplo ~/.bashrc).


Você também pode usar /etc/sysctl.conf(veja: man sysctl.conf) para aumentar os limites do kernel, por exemplo

kern.maxprocperuid=1000
kern.maxproc=2000

1
Quando esse erro ocorre, a "nova tentativa" implica que será tentada repetidamente até que os recursos estejam disponíveis?
21818 DaveTheMinion

@DavidB Ou que ele fez nova tentativa, mas falhou.
Kusalananda

@Kusalananda Ok, obrigado.
DaveTheMinion

0

O problema também pode ser resolvido usando os seguintes comandos:

yum install psmisc
killall -STOP -u user1
killall -KILL -u user1

Aqui user1 é o grupo de usuários para o qual o limite foi excedido


Matar todos os processos pertencentes ao usuário parece um pouco complicado. Além disso, esse yumcomando provavelmente também não seria capaz de bifurcar.
Kusalananda

O comando yum será executado através do usuário root, assumindo que ocorreu um problema em um usuário diferente do root
Arun

Se o shell falhar na bifurcação df, também haverá problemas na execução sudo.
Kusalananda
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.