Eu estava testando como uma máquina Ubuntu 16.04 lida com condições de pouca memória e teve vários trabalhos suspensos que consumiram quase toda a RAM do servidor. Ainda consegui executar comandos bash normais quando saí do trabalho ontem à noite. Pela manhã (sem ninguém fazer nada no servidor) todos os comandos ( ps
, free
, ls
, etc.) deram o seguinte erro:
-bash: fork: Cannot allocate memory
Finalmente consegui correr jobs
e kill %1
recuperar a máquina. Foi uma sorte manter uma sessão SSH aberta, porque outras conexões SSH falharam (o cliente simplesmente não mostrou um prompt de comando após a autenticação).
O fato de que programas regulares de usuário podem efetivamente derrubar todo o servidor ao ponto onde, se não houvesse uma sessão SSH existente, ele teria que ser reinicializado, éaltamenterelativo! Meu entendimento era que o Linux (ou qualquer sistema operacional, na verdade) deveria eliminar processos para liberar RAM antes que todo o sistema chegasse a um estado inutilizável. Como faço isso?