Gdzie mogę zobaczyć listę procesów zabitych przez jądro?

33

Czy jest jakiś sposób, aby sprawdzić, który z moich procesów zabił jądro? Czasami loguję się na mój serwer i stwierdzam, że coś, co powinno działać całą noc, zatrzymało się po 8 godzinach i nie jestem pewien, czy działają aplikacje, czy jądra.

Kit Sunde
źródło

Odpowiedzi:

30

Jeśli jądro zabije proces (ponieważ w systemie zabrakło pamięci), pojawi się komunikat dziennika jądra. Zaewidencjonuj /var/log/kern.log(w Debianie / Ubuntu inne dystrybucje mogą wysyłać dzienniki jądra do innego pliku, ale zwykle /var/logpod Linuksem).

Zauważ, że jeśli OOM-killer (out-of-memory killer) został uruchomiony, oznacza to, że nie masz wystarczającej ilości pamięci wirtualnej. Dodaj więcej wymiany (lub więcej pamięci RAM).

Niektóre awarie procesu są również rejestrowane w dziennikach jądra (np. Błędy segmentacji).

Jeśli procesy zostały uruchomione z crona, powinieneś mieć wiadomość z komunikatami o błędach. Jeśli procesy zostały uruchomione z powłoki w terminalu, sprawdź błędy w tym terminalu. Uruchom proces, screenaby rano zobaczyć terminal. Może to nie pomóc, jeśli OOM-killer się uruchomi, ponieważ mógł zabić również proces cron lub screen; ale jeśli natknąłeś się na zabójcę OOM, to musisz rozwiązać ten problem.

Gilles „SO- przestań być zły”
źródło
Jaka jest wiadomość o zabiciu wątku /var/log/kern.log?
Pszczoła
12

Rachunkowość procesów może tutaj pomóc.

W skrócie:

apt-get install acct

Następnie wypróbuj polecenia takie jak:

lastcomm
sa

lub na Ubuntu:

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

Widzieć:

AKTUALIZACJA

Co dziwne, pacctplik zawiera informacje o statusie wyjścia, ale ani lastcommnie sawydaje się, aby go wydrukować.

O ile widzę, musisz napisać własny program C, aby uzyskać dostęp do informacji.

AKTUALIZACJA 2

Oto wersja, która drukuje kod wyjścia.

Ostatnie dwa pola to „S” dla sygnalizacji i „E” dla wyjścia, a następnie numer sygnału lub status wyjścia.

Więc w twoim przypadku prawdopodobnie szukasz „S 15”, co oznacza, że ​​ma SIGTERM.

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

W porównaniu do „E 0”, co oznacza, że ​​proces zakończył się bez błędu.

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

Tylko minimalnie przetestowane.

Mikel
źródło
-1

usługa sudo - status-all

To polecenie powie Ci, jakie usługi są obecnie uruchomione, a które nie zostały uruchomione ani zatrzymane.


źródło