Capita spesso di trovarsi costretti ad operare su di un terminale perche’ abbiamo dei problemi piu’ o meno seri col nostro server X o con la sessione del nostro ambiente desktop.
Si pensi per esempio alla pulizia degli script di avvio, per cercare il massimo delle performance dal nostro boot, o per risolvere qualche problema di demone che impedisce il corretto avvio del sistema.
Assaporiamo questa breve rinfrescata sui runlevels che solitamente non fa mai male.
😉

Normalmente con Kde utilizziamo il modulo presente nella sezione “Amministrazione di sistema” per attivare ed associare uno script al nostro runlevel.
Tutto questo e’ naturalmente riproducibile da riga di comando, con tante opzioni in piu’ rispetto all’interfaccia citata poco fa.
Su sistemi Debian tali script si trovano in /etc/init.d, ma vengono attivati dal sistema tramite un altro percorso. Si tratta quindi di un link:

/etc/rcX.d/

Dove X e’ il numero del Runlevel.

Immaginiamo di scaricare ed installare un semplice programma, come Portsentry, che lascia uno script in /etc/init.d
L’avvio manuale e’ molto semplice:

cd /etc/init.d
sudo ./portsentry start

Non vogliamo pero’ usufruire di questo servizio, quindi non sara’ solo necessario lanciare:

sudo ./portsentry stop

perche’ avra’ effetto immediato, ma al riavvio successivo ce lo ritroveremo funzionante di nuovo.
Disattivare lo script con:

sudo chmod -x /etc/init.d/portsentry

non lo rimuove dal runlevel al quale e’ associato, e probabilmente ne leggeremo l’errore al boot.
Ci viene in aiuto update-rc.d , che si incarica di rimuovere/aggiungere automaticamente qualsiasi link necessario in /etc/init.d.

Esaminiamo per esempio lo script timidity:

dyve@kubuntu:/etc/rc3.d$ ls -l /etc/rc?.d/*timidity
lrwxrwxrwx 1 root root 18 2007-05-28 00:02 /etc/rc0.d/K99timidity -> ../init.d/timidity
lrwxrwxrwx 1 root root 18 2007-05-28 00:02 /etc/rc1.d/K99timidity -> ../init.d/timidity
lrwxrwxrwx 1 root root 18 2007-05-28 00:02 /etc/rc2.d/S99timidity -> ../init.d/timidity
lrwxrwxrwx 1 root root 18 2007-05-28 00:02 /etc/rc3.d/S99timidity -> ../init.d/timidity
lrwxrwxrwx 1 root root 18 2007-05-28 00:02 /etc/rc4.d/S99timidity -> ../init.d/timidity
lrwxrwxrwx 1 root root 18 2007-05-28 00:02 /etc/rc5.d/S99timidity -> ../init.d/timidity
lrwxrwxrwx 1 root root 18 2007-05-28 00:02 /etc/rc6.d/K99timidity -> ../init.d/timidity

Come si puo’ notare, per i runlevels 0, 1 e 6 c’e’ una K all’inizio del link, mentre per i runlevels 2, 3, 4 e 5, c’e’ una S. Queste lettere stanno rispettivamente per Kill e Start.
Su Debian e Ubuntu, i runlevels 2, 3, 4 e 5 sono multiutente ( multi-users runlevels).

Runlevel 0: Halt.
Runlevel 1: single user mode
Runlevel 6: Riavvio

Rimuovere un servizio

Torniamo al nostro portsentry, che vogliamo disattivare totalmente tramite update-rc.d.
Utilizziamo l’opzione -f per forzare la rimozione dei symlink anche se e’ ancora presente in /etc/init.d (nel caso lo volessimo riassociare):

sudo update-rc.d -f portsentry remove

NB: Dopo un upgrade del servizio, lo script si riattiva necessariamente (da qui i problemi con apt-get nel rimuovere dei pacchetti con servizio ancora attivo). Per ovviare a questo bisogna rimuovere i symlink con:

sudo update-rc.d portsentry stop 80 0 1 2 3 4 5 6

Percio’ il pacchetto Portsentry, una volta aggiornato, non tentera’ piu’ di sovrascrivere lo script associato ad un runlevel in uso.

Aggiungere un servizio

Analogamente per aggiungere di nuovo il servizio ci bastera’ lanciare:

sudo update-rc.d portsentry defaults

dyve@kubuntu:/etc/rc3.d$ sudo update-rc.d portsentry defaults
[sudo] password for dyve:
Adding system startup for /etc/init.d/portsentry …
/etc/rc0.d/K20portsentry -> ../init.d/portsentry
/etc/rc1.d/K20portsentry -> ../init.d/portsentry
/etc/rc6.d/K20portsentry -> ../init.d/portsentry
/etc/rc2.d/S20portsentry -> ../init.d/portsentry
/etc/rc3.d/S20portsentry -> ../init.d/portsentry
/etc/rc4.d/S20portsentry -> ../init.d/portsentry
/etc/rc5.d/S20portsentry -> ../init.d/portsentry
dyve@kubuntu:/etc/rc3.d$

Priorita’

Il valore di default e’ impostato su 20, mentre prima era su 91 … Il link S20 viene avviato prima di S91 e K91 e’ ucciso prima di K20.
Stando attenti al numero progressivo, per rimettere la priorita’ esattamente compre prima:

sudo update-rc.d portsentry defaults 91

E’ possibile anche modificare la priorita’ per lo Start e il Kill in maniera separata (primo valore Start secondo Kill):

sudo update-rc.d apache2 defaults 20 80

Infine, Finally, per ottenere Start e Kill per dei runlevels specifici, Vediamo l’esempio di portsentry com priorita’ 20 sui runlevels 2, 3, 4 e 5 …e Kill con priorita’ 80 sui runlevels 0, 1 e 6:

update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .

Traduzione Wiki originale

Related Posts Plugin for WordPress, Blogger...

Il tuo indirizzo ip:
18.234.236.14

Valutazione 3.00 su 5
happy wheels 2 demo

Category:

Senza categoria

Tags:

, ,

Commenti via Facebook:

Leave a Reply

Your email address will not be published. Required fields are marked *

*

6 Comments

  • ma non doveva entrare upstart in gutsy ?che fine ha fatto a che punto e’ lo sviluppo fu un polverone della madonna e poi siamo ancora soi runlevel sysV

      Quota

  • ma usare rcconf o sysv-rc-conf fa schifo??

      Quota

  • ugaciaka ITALY 11 anni ago

    sysv-rc-conf permette solo ti flaggare cosa avviare e cosa no, non toglie ne mette nulla

      Quota

  • Naima ITALY 11 anni ago

    Eh sì la domanda me la son fatta più volte anche io.. ma upstart? Pensavo ci fosse una rivoluzione invece ancora tutto come prima.. mi son persa qualcosa?

      Quota

  • pierissimo ITALY Mozilla Firefox Windows 11 anni ago

    divilinu ma invece se voglio fare eseguire uno script solo prima dello spegnimento?
    ad esempio voglio fare eseguire uno script di aggiornamento ogni volta prima dello spegnimento

      Quota

  • divilinu ITALY Mozilla Firefox Ubuntu Linux 11 anni ago

    @pierissimo
    usi le opzioni start e stop..nel manuale e’ ben spiegato

    man update-rc.d

    un esempio:

    update-rc.d esempio_script start 30 6 . stop 70 2 3 4 5 .

      Quota