Im POSIX-Standard ist vorgesehen, dass jeder[1] Prozess einen Eltern-Prozess hat (der diesen Prozess gestartet hat). Der Eltern-Prozess ist dafür zuständig, das Beenden des Kind-Prozesses zu überwachen und dabei den Exit-Status abzufragen.
Wenn nun ein Kind-Prozess beendet wird (sei es beabsichtigt oder unbeabsichtigt durch einen Fehler) und der Eltern-Prozess den Exit-Status nicht (mit der C-Funktion waitpid()) abfragt, entsteht ein sogn. Zombie-Prozess. Diese Prozesse existieren nicht wirklich, d.h. man kann ihnen nicht mit kill ein Signal schicken und sie damit beenden und sie brauchen außer ihrer Kernel-Internen u-structure keine weiteren Ressourcen des Systems -- sie warten lediglich darauf, dass endlich der Vater-Prozess den Status abfragt, damit sie richtig beendet werden können...
Zombie-Prozesse entstehen hauptsächlich durch schlampige Programmierung, wenn also der Vater-Prozess seinen Aufgaben nicht in jedem Fall nachkommt. Sie verschwinden wieder, sobald der Vater-Prozess die waitpid()-Funktion aufruft oder selber beendet wird, da in letzterem Fall der init-Prozess (mit der Prozess-ID 1) diese untoten Kinder "erbt" und dann ihren Exit-Status abfragt, wodurch sie dann regulär beendet werden können.
In Deinem Fall ist wohl irgendwas schief gelaufen, so dass die Prozesse an einer völlig unerwarteten Stelle beendet wurden und der aufrufende Prozess das nicht mitbekommen hat. Aus diesem Grund wirst Du wahrscheinlich nichts in den log-Files finden -- nachschauen solltest Du dort aber trotzdem. Schau mal nach, ob vielleicht der Platz auf der Platte nicht mehr ausreicht, oder Ähnliches.
Es könnte auch helfen, das Logrotate-Script (/etc/cron.daily/logrotate), das sonst durch den cron-Daemon aufgerufen wird, von Hand zu starten, um eventuelle Fehlermeldungen zu sehen, die andernfalls in /dev/null landen würden.
Viele Grüße,
LinuxAdmin
[1] Ausnahme ist der init-Prozess.