Où puis-je voir une list des process supprimés par le kernel?

Existe-t-il un moyen de vérifier lequel de mes process le kernel a tué? Parfois, je me connecte sur mon server et trouve que quelque chose qui aurait dû fonctionner toute la nuit vient de s'arrêter 8 heures et je ne sais pas si ce sont les applications ou les kernelx.

Si le kernel a tué un process (parce que le système a manqué de memory), il y aura un message de journal du kernel. Vérifiez dans /var/log/kern.log (sur Debian / Ubuntu, d'autres dissortingbutions peuvent envoyer des journaux de kernel vers un autre file, mais généralement sous /var/log sous Linux).

Notez que si le tueur de memory morte (OOM-killer) déclenché, cela signifie que vous n'avez pas assez de memory virtuelle. Ajouter plus de swap (ou peut-être plus de RAM).

Certains crashs de process sont également enregistrés dans les journaux du kernel (par exemple, les erreurs de segmentation).

Si les process ont été lancés à partir de cron, vous devriez avoir un courrier avec des messages d'erreur. Si les process ont été démarrés à partir d'un shell dans un terminal, vérifiez les erreurs dans ce terminal. Exécutez le process dans l' screen pour voir le terminal à nouveau le matin. Cela pourrait ne pas être utile si le tueur du MOO se déclenchait, car il aurait pu également tuer le process cron ou screen; mais si vous avez rencontré le tueur de MOO, c'est le problème que vous devez résoudre.

La comptabilité des process pourrait aider ici.

En bref:

 apt-get install acct 

Ensuite, essayez les commands comme:

 lastcomm sa 

ou sur Ubuntu:

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

Voir:

METTRE À JOUR

Curieusement, le file pacct contient des informations sur l'état de sortie, mais ni lastcomm ni sa semblent l'imprimer.

Donc, pour autant que je puisse voir, vous devrez écrire votre propre programme C pour accéder à l'information.

MISE À JOUR 2

Voici une version qui affiche le code de sortie.

Les deux derniers champs sont «S» pour signalés et «E» pour sortie, suivi du numéro de signal ou de l'état de sortie.

Donc, dans votre cas, vous searchz probablement "S 15", ce qui signifie qu'il a un SIGTERM.

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

Par rapport à "E 0" ce qui signifie que le process s'est terminé sans erreur.

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

Seulement minimalement testé.

sudo service –status-all

Cette command vous dira quels sont les services en cours d'exécution et qui ne sont pas démarrés ou arrêtés.