Де я можу побачити список процесів, убитих ядром?


33

Чи є якимось чином я можу перевірити, який із моїх процесів вбило ядро? Іноді я заходжу на свій сервер і виявляю, що щось, що повинно працювати цілу ніч, просто зупинилося на 8 годин, і я не впевнений, чи це програми, чи ядра.

Відповіді:


30

Якщо ядро ​​вбило процес (оскільки у системи не вистачало пам'яті), з'явиться повідомлення журналу ядра. Зареєструватися /var/log/kern.log(на Debian / Ubuntu, інші дистрибутиви можуть надсилати журнали ядра до іншого файлу, але зазвичай /var/logпід Linux).

Зауважте, що якщо спрацьовує вбивця OOM (вбивця поза пам'яттю), це означає, що у вас недостатньо віртуальної пам'яті. Додайте більше свопу (або, можливо, більше оперативної пам’яті).

Деякі збої процесу записуються і в журнали ядра (наприклад, помилки сегментації).

Якщо процеси були запущені з cron, ви повинні мати пошту із повідомленнями про помилки. Якщо процеси були запущені з оболонки в терміналі, перевірте помилки в цьому терміналі. Запустіть процес, screenщоб знову побачити термінал вранці. Це може не допомогти, якщо вбивця OOM спрацьовує, тому що це може вбити також процес крона чи екрана; але якщо ви натрапили на вбивцю OOM, це проблема, яку потрібно виправити.


Що таке повідомлення про те, як знищити нитку /var/log/kern.log?
Бджола

12

Тут може допомогти облік процесів.

Коротко:

apt-get install acct

Потім спробуйте такі команди, як:

lastcomm
sa

або на Ubuntu:

lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct

Побачити:

ОНОВЛЕННЯ

Як не дивно, pacctфайл має інформацію про стан виходу, але ні, lastcommні saздається, його не друкує.

Наскільки я бачу, вам доведеться написати власну програму C для доступу до інформації.

ОНОВЛЕННЯ 2

Ось версія, яка друкує вихідний код.

Останні два поля - "S" для сигналізованого та "E" для вихідного, а потім номер сигналу або стан виходу.

Отже, у вашому випадку ви, ймовірно, шукаєте "S 15", тобто він отримав СИГУРМУ.

sleep                X mikel    stdin      0.00 secs Fri Mar 25 20:15 S  15

Порівняно з "E 0", це означає, що процес закінчився без помилок.

true                   mikel    stdin      0.00 secs Fri Mar 25 20:16 E   0

Тільки мінімально перевірені.


-1

служба судо --status-all

Ця команда підкаже, які саме сервіси зараз запущені, а які не запускаються і не зупиняються.

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