creare servizi dentro /etc/rc.d

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
tarini
Linux 0.x
Linux 0.x
Messaggi: 38
Iscritto il: dom 23 mar 2008, 20:32
Kernel: 12
Desktop: KDE 3.x
Contatta:

creare servizi dentro /etc/rc.d

Messaggio 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

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: creare servizi dentro /etc/rc.d

Messaggio 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

Avatar utente
tarini
Linux 0.x
Linux 0.x
Messaggi: 38
Iscritto il: dom 23 mar 2008, 20:32
Kernel: 12
Desktop: KDE 3.x
Contatta:

Re: creare servizi dentro /etc/rc.d

Messaggio da tarini »

perfetto...
ma se volessi mettere un servizio di questi dentro un pacchetto?

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: creare servizi dentro /etc/rc.d

Messaggio 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 ???

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: creare servizi dentro /etc/rc.d

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
tarini
Linux 0.x
Linux 0.x
Messaggi: 38
Iscritto il: dom 23 mar 2008, 20:32
Kernel: 12
Desktop: KDE 3.x
Contatta:

Re: creare servizi dentro /etc/rc.d

Messaggio 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)

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: creare servizi dentro /etc/rc.d

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
tarini
Linux 0.x
Linux 0.x
Messaggi: 38
Iscritto il: dom 23 mar 2008, 20:32
Kernel: 12
Desktop: KDE 3.x
Contatta:

Re: creare servizi dentro /etc/rc.d

Messaggio 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 :D

grazie

Rispondi