Почему Linux может убить мой процесс?

Почему Linux может убить мой процесс?
  • Redhat Linux Enterprise Server 5.10 (я знаю, что он старый, но я не могу это изменить)
  • Эта машина виртуализирована с помощью VMTools.
  • Общий объем памяти для этой виртуальной машины: 32 ГБ. Общий объем подкачки на диске (виртуальная память): 36 ГБ. На основном диске осталось 900 ГБ.
  • Терминал — Hummingbird Exceed v14 на Windows 7. (Я не могу изменить ни один из них.)
  • Я не настоящий сисадмин, я просто программирую на машине. Так что более подробные инструкции были бы полезны, например, где находятся логи и что нужно grep.

Когда я запускаю определенную программу, считывающую 7000 строк из электронной таблицы (которая не так уж и велика), иногда мой процесс просто завершается, а терминал исчезает.

  • По каким причинам ОС может завершить мой процесс?
  • Физический сервер, на котором находится эта виртуальная машина, вчера был очень загружен. Кто знает, сколько памяти использовали другие виртуальные машины на этом сервере, но разве мои 32 ГБ памяти не должны быть зарезервированы только для моей виртуальной машины?
  • Будет ли VMTOOLS проверять все виртуальные машины при нехватке памяти и выбирать случайные виртуальные машины и случайные пожиратели ресурсов для завершения? (Мой процесс использовал 95–99 % процессорного времени, но, опять же, я думал, что это касается только моей виртуальной машины.)

Спасибо. Я тут действительно застрял.


EDIT 1: Я проверил /var/log/syslog и проигнорировал несколько типов строк, использующих grep -vи то, что я увидел, что когда меня выкидывало, каждый раз это выглядело так, будто запускались какие-то ресурсоемкие задания cron. Я думаю, что это то, что произошло.

Теперь мой вопрос, теперь я могу ограничить память и пространство подкачки, которые используют эти задания cron, чтобы память не использовалась и мой терминал не был убит? Есть ли что-то, что я могу сделать на уровне ОС?


EDIT 12/7/2017: После дальнейшего расследования с top, мы и близко не приблизились к использованию памяти, пространства подкачки или места на жестком диске. Так что происходит что-то еще, и ИТ изучает это.

решение1

Теперь мой вопрос, теперь я могу ограничить память и пространство подкачки, которые используют эти задания cron, чтобы память не использовалась и мой терминал не был убит? Есть ли что-то, что я могу сделать на уровне ОС?

Да. Читайте внимательно.setrlimit(2). Вы хотите использоватьulimit встроенный bashсоответствующим образом.

Быть в курсеперегрузка памяти.

Связанный контент