[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