Виявлення, який процес був убитий вбивцею Linux OOM


172

Коли у Linux не вистачає пам'яті (OOM), вбивця OOM вибирає процес вбивства на основі деяких евристик (цікаве прочитання: http://lwn.net/Articles/317814/ ).

Як можна програмно визначити, які процеси нещодавно були вбиті вбивцею ООМ?

Відповіді:


171

Спробуйте це:

grep -i 'killed process' /var/log/messages

18
FWIW, я отримую ці повідомлення в syslog або kern.log, але не / var / log / messages
jberryman

36
Ви можете використовувати "egrep -i -r" убитий процес "/ var / log /", щоб шукати його також і в інших місцях.
metdos

5
@jberryman: З деяких причин, syslog є в /var/log/syslogдеяких дистрибутивах, а /var/log/messagesв інших -. Я думаю, що це Debian для першого та Red Hat для другого, BICBW.
Том Андерсон

5
"dmesg | egrep -i 'убитий процес" ", і ви можете шукати журнали в будь-якому місці (включаючи заархівовані) :)
John D

2
egrepтут немає сенсу. Звичайне старе grep, або якщо ми конкретні fgrep, має набагато більше сенсу. (Відповідно
редагуючи

148

Спробуйте це, щоб вам не потрібно турбуватися про те, де ваші журнали

dmesg | egrep -i 'killed process'

1
Це також корисно, але, хоча я, на жаль, не можу пояснити це, я бачу результати /var/log/messages, які не відображаються в dmesg/ /var/log/dmesg. Це може бути якась неправильна конфігурація, але варто зазначити, що використання обох підходів може бути хорошою ідеєю.
kungphu

3
Не впевнений у вашому журналі журналу, але вихід dmesg відбувається з кільцевого буфера обмеженого розміру. Якщо інші речі заповнили буфер з моменту вбивці, то ви втратите вихід.
Dan Pritts

Це був єдиний спосіб, коли я дізнався, як цей процес був убитий у контейнері OpenVZ
igo

16
Я б також запропонував використовувати dmesg -Tдля отримання читаних часових позначок
gukoff

2
У порівнянні з / var / log / messages, це має переваги в тому, що не потребує кореневих привілеїв
Кінеолян

52

Тепер dstat надає можливість дізнатися у вашій запущеній системі, який процес може бути вбитий механізмом oom

dstat --top-oom
 --out-of-memory---
  kill score
 java           77
 java           77
 java           77

і відповідно до сторінки чоловіка

  --top-oom
          show process that will be killed by OOM the first

Ця інформація є безглуздою, не знаючи, що означає оцінка, і це ніде не зафіксовано. Все, що ви можете бачити, - це збільшення балів, потім процес вбивається, тож, можливо, це був убивця, або, можливо, це було щось інше, немає жодного способу бути впевненим.
ларан

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.