Risposte:
Se il kernel ha interrotto un processo (perché il sistema ha esaurito la memoria), ci sarà un messaggio di registro del kernel. Check in /var/log/kern.log
(su Debian / Ubuntu, altre distribuzioni potrebbero inviare i log del kernel in un file diverso, ma di solito /var/log
sotto Linux).
Nota che se il killer OOM (killer di memoria esaurita) si è attivato, significa che non hai abbastanza memoria virtuale. Aggiungi più swap (o forse più RAM).
Alcuni arresti anomali del processo sono registrati anche nei log del kernel (ad es. Errori di segmentazione).
Se i processi sono stati avviati da cron, dovresti avere una mail con messaggi di errore. Se i processi sono stati avviati da una shell in un terminale, controllare gli errori in quel terminale. Esegui il processo screen
per vedere di nuovo il terminal al mattino. Questo potrebbe non aiutare se il killer OOM si innesca, perché potrebbe aver ucciso anche il processo cron o screen; ma se ti sei imbattuto in OOM-killer, questo è il problema che devi risolvere.
Process Accounting potrebbe aiutare qui.
In breve:
apt-get install acct
Quindi prova comandi come:
lastcomm
sa
o su Ubuntu:
lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct
Vedere:
AGGIORNARE
Stranamente, il pacct
file contiene informazioni sullo stato di uscita, ma lastcomm
né sa
sembra né stamparlo.
Quindi, per quanto posso vedere, dovresti scrivere il tuo programma C per accedere alle informazioni.
AGGIORNAMENTO 2
Ecco una versione che stampa il codice di uscita.
Gli ultimi due campi sono "S" per segnale e "E" per uscita, seguito dal numero del segnale o dallo stato di uscita.
Quindi, nel tuo caso, probabilmente stai cercando "S 15", il che significa che ha un SIGTERM.
sleep X mikel stdin 0.00 secs Fri Mar 25 20:15 S 15
Rispetto a "E 0" significa che il processo è uscito senza errori.
true mikel stdin 0.00 secs Fri Mar 25 20:16 E 0
Solo minimamente testato.
servizio sudo --status-all
Questo comando ti dirà quali sono i servizi attualmente in esecuzione e quali non sono stati avviati o arrestati.
/var/log/kern.log
?