Di mana saya bisa melihat daftar proses yang terbunuh kernel?

33

Apakah ada cara saya dapat memeriksa proses saya yang telah dimatikan oleh kernel? Kadang-kadang saya masuk ke server saya dan menemukan bahwa sesuatu yang seharusnya berjalan sepanjang malam hanya berhenti 8 jam dan saya tidak yakin apakah itu aplikasi atau kernel.

Kit Sunde
sumber

Jawaban:

30

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/logbawah 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 screenuntuk 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.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Seperti apakah pesan utas pembunuhan /var/log/kern.log?
Lebah
12

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, pacctfile tersebut memiliki informasi tentang status keluar, tetapi sepertinya tidak lastcommjuga sauntuk 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.

Mikel
sumber
-1

layanan sudo - status-semua

Perintah ini akan memberi tahu Anda apa layanan yang sedang berjalan dan yang tidak dimulai atau dihentikan ..


sumber