Ответы:
Если ядро уничтожило процесс (потому что системе не хватило памяти), появится сообщение журнала ядра. Регистрация /var/log/kern.log
(в Debian / Ubuntu другие дистрибутивы могут отправлять журналы ядра в другой файл, но обычно /var/log
под Linux).
Обратите внимание, что если сработал OOM-killer (убийца нехватки памяти), это означает, что у вас недостаточно виртуальной памяти. Добавьте больше подкачки (или, возможно, больше оперативной памяти).
Некоторые сбои процессов также записываются в журналах ядра (например, ошибки сегментации).
Если процессы были запущены из cron, у вас должно быть письмо с сообщениями об ошибках. Если процессы были запущены из оболочки в терминале, проверьте ошибки в этом терминале. Запустите процесс, screen
чтобы снова увидеть терминал утром. Это может не помочь, если сработает OOM-killer, потому что он мог убить также cron или screen screen; но если вы столкнулись с OOM-killer, эту проблему вам нужно решить.
Процесс учета может помочь здесь.
Вкратце:
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», означающее, что он получил SIGTERM.
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
Только минимально проверено.
sudo service --status-all
Эта команда расскажет вам, какие службы запущены в данный момент, а какие не запущены или не остановлены.
/var/log/kern.log
?