Jawaban:
Jika kernel membunuh proses (karena sistem kehabisan memori), akan ada pesan log kernel. Lapor masuk /var/log/kern.log
(di Debian / Ubuntu, distribusi lain mungkin mengirim log kernel ke file yang berbeda, tetapi biasanya di /var/log
bawah Linux).
Perhatikan bahwa jika OOM-killer (out-of-memory killer) terpicu, itu berarti Anda tidak memiliki cukup memori virtual. Tambahkan lebih banyak swap (atau mungkin lebih banyak RAM).
Beberapa proses crash juga dicatat dalam log kernel (misalnya kesalahan segmentasi).
Jika proses dimulai dari cron, Anda harus memiliki email berisi pesan kesalahan. Jika proses dimulai dari shell di terminal, periksa kesalahan di terminal itu. Jalankan proses screen
untuk melihat terminal lagi di pagi hari. Ini mungkin tidak membantu jika pembunuh-OOM dipicu, karena mungkin membunuh proses cron atau layar juga; tetapi jika Anda bertemu dengan OOM-killer, itulah masalah yang perlu Anda perbaiki.
Proses Akuntansi dapat membantu di sini.
Secara singkat:
apt-get install acct
Kemudian coba perintah seperti:
lastcomm
sa
atau di Ubuntu:
lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct
Lihat:
MEMPERBARUI
Anehnya, pacct
file tersebut memiliki informasi tentang status keluar, tetapi sepertinya tidak lastcomm
juga sa
untuk mencetaknya.
Jadi sejauh yang saya bisa lihat, Anda harus menulis program C Anda sendiri untuk mengakses informasi.
PEMBARUAN 2
Berikut adalah versi yang mencetak kode keluar.
Dua bidang terakhir adalah "S" untuk sinyal dan "E" untuk keluar, diikuti oleh nomor sinyal atau status keluar.
Jadi dalam kasus Anda, Anda mungkin mencari "S 15" yang berarti ia mendapat SIGTERM.
sleep X mikel stdin 0.00 secs Fri Mar 25 20:15 S 15
Dibandingkan dengan "E 0" yang berarti proses keluar tanpa kesalahan.
true mikel stdin 0.00 secs Fri Mar 25 20:16 E 0
Hanya diuji secara minimal.
layanan sudo - status-semua
Perintah ini akan memberi tahu Anda apa layanan yang sedang berjalan dan yang tidak dimulai atau dihentikan ..
/var/log/kern.log
?