Виявлення, який процес був убитий вбивцею 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.