[Tech] crond e daemon t.
Gianni Bianchini
giannibi@firenze.linux.it
Gio 11 Apr 2002 17:41:35 CEST
On Thu, Apr 11, 2002 at 04:49:14PM +0200, Leonardo Giacomelli wrote:
> Su una macchina Debian potato, visto che mi moriva crond (non so
> perche'), ho ben pensato di mettere il suddetto sotto il supervisore
> dei daemontools.. funzionare funziona, ma facendo un ps vedo:
> root 15983 0.0 0.4 988 304 pts/1 S 14:33 0:00 supervise cron
> cronlog 15986 0.0 0.4 1000 296 pts/1 S 14:33 0:00 multilog t ./main
> root 16054 0.0 0.4 988 276 pts/1 S 15:15 \
> 0:00 /usr/bin/fghack /usr/sbin/cron
> root 16055 0.0 0.0 0 0 pts/1 Z 15:15 0:00 [cron <defunct>]
> root 16056 0.0 0.9 1168 620 ? S 15:15 0:00 /usr/sbin/cron
>
> E' normale quel cron defunto? Ripeto, inconvenienti a parte quello zombie
> sembra non ce ne siano.
Mi sa che sia fisiologico.
Dunque, cron vuole andare per forza in background, quindi giustamente l'hai
lanciato tramite fghack che apre alcune pipe verso il processo (16055),
questo si forka, lancia 16056 (che eredita le pipe) e poi muore. fghack
continua a monitorare una pipe (e' l'unico mezzo che ha per rendersi
conto di quando 16056 muore a sua volta) e fa questo con una serie di
read (bloccanti), vai a vedere il sorgente e te ne accorgi, e' molto
semplice. Il loop finisce solo quando la pipe viene trovata chiusa e
solo allora fghack esegue una waitpid(). Siccome 16055 muore sicuramente
prima (quando va in background), esso diventa zombie e ci rimane fino a
quando anche 16056 muore a sua volta.
Ciao.
Gianni.
--
Gianni Bianchini - giannibi@firenze.linux.it
Maggiori informazioni sulla lista
flug-tech