[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Rebooter une machine par une tâche cron...



Le 12436ième jour après Epoch,
georges mariano écrivait:

> On Sun, 18 Jan 2004 14:38:39 +0100
> fra-duf-no-spam@tourde.org (François TOURDE) wrote:
>
>> Ben la voilà ta solution.. Dans /etc/inittab, tu mets pour le runlevel
>> 1 un petit script qui calcule la durée entre now et 6h00, qui fait un
>> sleep de cette durée, puis qui fait init 2 ...
>
> tu peux rallonger la sauce ?... je vais regarder ça (plus tard) mais là
> je vois pas où est le caractère cyclique de la chose ...

Allez, on rallonge... Dans cron, qui est un gentil programme en
runlevel 2, tu mets une directive qui passe en runlevel 1 à l'heure
que tu choisis. Une fois en runlevel 1, cron est mort, mais ton prog
lancé dans inittab reprends le relai.

Petit inconvénient: Si tu décides, pour des raisons de maintenance, de
passer en init 1 aux alentours de 6h, alors tu vas être surpris quand
ta machine va revenir en runlevel 2 :)

>> Mais à mon avis tu devrais agrémenter tes scripts de mise à
>> jour d'un truc du genre "lsof +L1|grep dpkg", de façon à voir quels
>> sont les services qui tournent avec les anciennes libs/anciens progs,
>> et les redémarrer spécifiquement.
>
> je pige l'idée sous-jacente mais si je fais un 'lsof +L1' je vois pas
> trop comment tu l'exploite (ta commande est-elle complète ?)

Oui, complète. Voilà ce que me dit la commande dans mon cas:

-----8<---------8<---------8<---------8<---------8<---------8<----
fermat:~# lsof +L1|grep dpkg
cupsd       292     root  mem    DEL    3,5           0     359204 /usr/lib/libslp.so.1.0.0.dpkg-new
cupsd       292     root  mem    DEL    3,2           0      31276 /lib/libpam.so.0.76.dpkg-new
tclsh       315     root  txt    REG    3,5  3180     0      32671 /usr/bin/tclsh8.4.dpkg-new (deleted)
tclsh       315     root  mem    DEL    3,5           0     359766 /usr/lib/libtcl8.4.so.0.dpkg-new
tclsh       331     root  txt    REG    3,5  3180     0      32671 /usr/bin/tclsh8.4.dpkg-new (deleted)
tclsh       331     root  mem    DEL    3,5           0     359766 /usr/lib/libtcl8.4.so.0.dpkg-new
tclsh       332     root  txt    REG    3,5  3180     0      32671 /usr/bin/tclsh8.4.dpkg-new (deleted)
tclsh       332     root  mem    DEL    3,5           0     359766 /usr/lib/libtcl8.4.so.0.dpkg-new
cron        500     root  mem    DEL    3,2           0      31276 /lib/libpam.so.0.76.dpkg-new
gdm       16394     root  mem    DEL    3,5           0     359193 /usr/lib/libgconf-2.so.4.1.0.dpkg-new
gdm       16395     root  mem    DEL    3,5           0     359193 /usr/lib/libgconf-2.so.4.1.0.dpkg-new
gconfd-2  16509     root  txt    REG    3,5 45336     0     293777 /usr/lib/gconf2/gconfd-2.dpkg-new (deleted)
gconfd-2  16509     root  mem    DEL    3,5           0     294019 /usr/lib/GConf/2/libgconfbackend-xml.so.dpkg-new
gconfd-2  16509     root  mem    DEL    3,5           0     359193 /usr/lib/libgconf-2.so.4.1.0.dpkg-new
gnome-set 16515     root  mem    DEL    3,5           0     359193 /usr/lib/libgconf-2.so.4.1.0.dpkg-new
gconfd-2  16549 francois  txt    REG    3,5 45336     0     293777 /usr/lib/gconf2/gconfd-2.dpkg-new (deleted)
gconfd-2  16549 francois  mem    DEL    3,5           0      98350 /usr/share/locale/fr/LC_MESSAGES/GConf2.mo.dpkg-new
gconfd-2  16549 francois  mem    DEL    3,5           0     359193 /usr/lib/libgconf-2.so.4.1.0.dpkg-new
gconfd-2  16549 francois  mem    DEL    3,5           0     294019 /usr/lib/GConf/2/libgconfbackend-xml.so.dpkg-new
oafd      31474 francois  mem    DEL    3,2           0      32998 /lib/libpopt.so.0.0.0.dpkg-new
-----8<---------8<---------8<---------8<---------8<---------8<----

Après, à toi de scripter si tu veux, pour relancer les services
concernés. Dans cet exemple, il faut que je relance cupsys, i8kmon
(tclsh), cron, gdm, etc...

>> Perso, tous les jours, mon serveur me mail le résultat de cette
>> commande (si elle n'est pas vide), 
>
> hop, je saute sur l'occase, comment tu fais pour ce test "si elle n'est
> pas vide" ?

Euh... Ben cron me mail si stdout ou stderr contiennent quelque
chose. Donc, mon script cron est:

-----8<---------8<---------8<---------8<---------8<---------8<----
#!/bin/sh
# Check for progs connected to old libs...
#

/usr/sbin/lsof +L1|grep ".dpkg-new"

-----8<---------8<---------8<---------8<---------8<---------8<----

Et voilà. Tu peux rajouter aussi un 2>/dev/null et un exit 0, pour
être sûr de ne le recevoir que quand il a des choses à te dire. Mais
moi comme chkrootkit et autres trucs me donnent de la lecture, ça me
gêne pas plus que ça.

-- 
"Being against torture ought to be sort of a bipartisan thing."
-- Karl Lehenbauer



Reply to: