Pagina 1 di 1
creare servizi dentro /etc/rc.d
Inviato: gio 8 gen 2009, 21:42
da tarini
salve ragazzi,
vorrei creare un servizio dedicato a ddclient (il famoso programmino per aggiornare dns dinamici) in modo da renderlo attivo all'avvio della macchina e inoltre permettere di "controllarlo" tramite i comodi comandi "start", "stop", "reload"...
i servizi sono contenuti dentro la directory /etc/rc.d
basta inserire un file eseguibile all'interno di questa directory per renderlo "attivo" all'avvio o è necessario altro?
ho inoltre visto che esiste un rc.local con lo scopo apposito di inserire chiamate personalizzate a comandi... dovrei utilizzarlo in qualche modo? qualè il miglior modo di procedere?
tnx
Re: creare servizi dentro /etc/rc.d
Inviato: gio 8 gen 2009, 22:42
da Mario Vanoni
tarini ha scritto:salve ragazzi,
vorrei creare un servizio dedicato a ddclient (il famoso programmino per aggiornare dns dinamici) in modo da renderlo attivo all'avvio della macchina e inoltre permettere di "controllarlo" tramite i comodi comandi "start", "stop", "reload"...
i servizi sono contenuti dentro la directory /etc/rc.d
basta inserire un file eseguibile all'interno di questa directory per renderlo "attivo" all'avvio o è necessario altro?
ho inoltre visto che esiste un rc.local con lo scopo apposito di inserire chiamate personalizzate a comandi... dovrei utilizzarlo in qualche modo? qualè il miglior modo di procedere?
tnx
- fai un eseguibile rc.mio_eseguibile
- devi citarlo/eseguirlo in rc.S e/o rc.M
oppure
- lo metti/scrivi in rc.local
Re: creare servizi dentro /etc/rc.d
Inviato: ven 9 gen 2009, 15:14
da tarini
perfetto...
ma se volessi mettere un servizio di questi dentro un pacchetto?
Re: creare servizi dentro /etc/rc.d
Inviato: ven 9 gen 2009, 15:47
da Mario Vanoni
tarini ha scritto:perfetto...
ma se volessi mettere un servizio di questi dentro un pacchetto?
Non capisco quello che intendi dire ...
... un servizio di questi ???
... mettere dove ???
Re: creare servizi dentro /etc/rc.d
Inviato: ven 9 gen 2009, 16:34
da targzeta
Quello che vuoi è creare il pacchetto di ddclient ed inserirci lo script in /etc/rc.d in modo che all'installazione del pacchetti sia già presente il file /etc/rc.d/rc.ddclient, ad esempio?
Spina
Re: creare servizi dentro /etc/rc.d
Inviato: ven 9 gen 2009, 16:40
da tarini
è esattamente come ha detto spina...
vorrei creare il pacchetto ddclient che oltre al binario (/bin/ddclient), alla configurazione (/etc/ddclient/ddclient.conf), alla directory di cache (/var/cache/ddclient) e eventuale documentazione
inserisca dentro /etc/rc.d lo script di avvio|interruzione
però vorrei (poi non so se è l'approccio giusto) renderlo automatico all'avvio (quindi non basta piazzarlo dentro /etc/rc.d)
Re: creare servizi dentro /etc/rc.d
Inviato: ven 9 gen 2009, 16:54
da targzeta
Devi
- inserire nel pacchetto lo script (non eseguibile) chiamandolo "rc.ddclient.new"
- devi creare il doinst.sh inserendoci
Codice: Seleziona tutto
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
# toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
config etc/rc.d/rc.ddclient.new
e questa è la forma classica usata per inserire file rc nel pacchetto. Se però vuoi anche renderlo attivo all'avvio della macchina devi inserire, sempre nel doinst.sh una cosa del genere
Codice: Seleziona tutto
if ! grep rc.ddclient etc/rc.d/rc.local >& /dev/null; then
cat >> etc/rc.d/rc.local << EOF
if [ -x /etc/rc.d/rc.ddclient ]; then
sh /etc/rc.d/rc.ddclient start;
fi
EOF
fi
Ma generalmente non si fa!
In questo modo all'installazione del pacchetto, se non c'era nessuna direttiva nel file rc.local che invocasse rc.ddclient, verrà inserita automaticamente.
Spina
Re: creare servizi dentro /etc/rc.d
Inviato: ven 9 gen 2009, 22:50
da tarini
spina ha scritto:devi creare il doinst.sh inserendoci
Codice: Seleziona tutto
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
# toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
config etc/rc.d/rc.ddclient.new
che è lo stesso approccio usato per non sovrascrivere eventuali file di configurazione... ottimo sto iniziando a capire
grazie