Відповіді:
Якщо ядро вбило процес (оскільки у системи не вистачало пам'яті), з'явиться повідомлення журналу ядра. Зареєструватися /var/log/kern.log
(на Debian / Ubuntu, інші дистрибутиви можуть надсилати журнали ядра до іншого файлу, але зазвичай /var/log
під Linux).
Зауважте, що якщо спрацьовує вбивця OOM (вбивця поза пам'яттю), це означає, що у вас недостатньо віртуальної пам'яті. Додайте більше свопу (або, можливо, більше оперативної пам’яті).
Деякі збої процесу записуються і в журнали ядра (наприклад, помилки сегментації).
Якщо процеси були запущені з cron, ви повинні мати пошту із повідомленнями про помилки. Якщо процеси були запущені з оболонки в терміналі, перевірте помилки в цьому терміналі. Запустіть процес, screen
щоб знову побачити термінал вранці. Це може не допомогти, якщо вбивця OOM спрацьовує, тому що це може вбити також процес крона чи екрана; але якщо ви натрапили на вбивцю OOM, це проблема, яку потрібно виправити.
Тут може допомогти облік процесів.
Коротко:
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
Тільки мінімально перевірені.
служба судо --status-all
Ця команда підкаже, які саме сервіси зараз запущені, а які не запускаються і не зупиняються.
/var/log/kern.log
?