Я тестировал, как машина Ubuntu 16.04 обрабатывает условия нехватки памяти, и у меня было несколько приостановленных заданий, которые использовали почти всю оперативную память на сервере. Когда вчера вечером я уходил с работы, я все еще мог запускать обычные команды bash. Утром (без каких-либо действий с сервером) все команды (ps
, free
, ls
и т. д.) выдала следующую ошибку:
-bash: fork: Cannot allocate memory
В конце концов я смог бежать jobs
и kill %1
восстановить машину. Мне повезло, что я сохранил сеанс SSH открытым, потому что дальнейшие SSH-соединения не удались (клиент просто не отображал командную строку после аутентификации).
Тот факт, что обычные пользовательские программы могут эффективно вывести из строя весь сервер до такой степени, что, если бы не было существующего сеанса SSH, его пришлось бы жестко перезагрузить, является очень что касается! Насколько я понимаю, Linux (или любая другая ОС) должен уничтожать процессы, чтобы освободить оперативную память, прежде чем вся система перейдет в такое непригодное для использования состояние. Как мне это сделать?