Réponses:
Si le noyau a tué un processus (car le système n'a plus de mémoire), il y aura un message de journal du noyau. Archiver /var/log/kern.log
(sous Debian / Ubuntu, d’autres distributions pourraient envoyer les journaux du noyau dans un fichier différent, mais généralement /var/log
sous Linux).
Notez que si le tueur de mémoire MOO (destructeur de mémoire insuffisante) se déclenche, cela signifie que vous n’avez pas assez de mémoire virtuelle. Ajouter plus de swap (ou peut-être plus de RAM).
Certaines pannes de processus sont également enregistrées dans les journaux du noyau (par exemple, des erreurs de segmentation).
Si les processus ont été lancés à partir de cron, vous devriez avoir un mail avec des messages d'erreur. Si les processus ont été démarrés à partir d'un shell dans un terminal, vérifiez les erreurs dans ce terminal. Exécutez le processus screen
pour voir le terminal à nouveau dans la matinée. Cela pourrait ne pas aider si le tueur OOM-tueur se déclenche, car cela aurait également tué le processus cron ou screen; mais si vous rencontrez le tueur OOM, c'est le problème que vous devez résoudre.
La comptabilité des processus pourrait aider ici.
En bref:
apt-get install acct
Ensuite, essayez des commandes comme:
lastcomm
sa
ou sur Ubuntu:
lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct
Voir:
MISE À JOUR
Étrangement, le pacct
fichier contient des informations sur l'état de sortie, mais ni lastcomm
ne sa
semble l'imprimer.
Donc, autant que je sache, il vous faudrait écrire votre propre programme en 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 sortis, suivis du numéro du signal ou de l'état de sortie.
Donc, dans votre cas, vous cherchez 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", cela signifie que le processus s'est terminé sans erreur.
true mikel stdin 0.00 secs Fri Mar 25 20:16 E 0
Seulement testé au minimum.
service sudo --status-all
Cette commande vous indiquera quels sont les services en cours d’exécution et ceux qui ne sont ni démarrés ni arrêtés.
/var/log/kern.log
?