From: "Davide" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, August 08, 2000 3:07 PM
Subject: [newbie-it] avviare applicazioni al boot


> Vorrei far partire direttamente al boot wwwoffle. Per farlo partire io do
> da shell:
>
>   wwwoffled -c wwwoffle.conf
>
> Come posso fare per far sì che questo sia una cosa automatica? Si possono
> aggiungere script in /etc/rc.d/init.d? Come?

Certo, ed è il sistema migliore. Va però capito bene. Due parole di
spiegazione penso possano essere utili.
NotaBene: Mandrake per gli init scripts usa lo stile SystemV (+/-), altre
distribuzioni possono usare sistemi diversi o leggermente modificati.

La cosa funziona così: in /etc/rc.d/init.d deve trovarsi uno script file, il
cui nome è associato al processo che deve far partire (non è obbligatorio,
ma utile :) ). Tale script deve accettare in ingresso almeno i comandi start
e stop (può accettarne altri, come restart,status, ecc...). Il suo compito è
far partire in modo "pulito" il processo, ossia controllare che esista, che
sia configurato se necessario, scrivere in /var/run/ (credo la directory sia
questa) un file in cui si riporta il pid del processo, etc... e naturalmente
di "terminarlo" in modo corretto.
Tale script può essere lanciato a mano (es: /etc/rc.d/init.d/httpd start),
ma solitamente viene lanciato al boot dall'init system.
Premessa: l'init system può far partire la macchina in diversi "runlevels",
ongnuno con un particolare set di processi attivati. Non ricordo mai i
numeri, ma runlevel 3 può voler dire "tutti i servizi, modalità a
carattere", runlevel 4 "xwindow attivo" (per inciso, è qui che va a finire
il settaggio che viene chiesto all'installazione, "vuoi far partire xwindow
al boot?"). Runlevel 1 ad esempio è il "single user mode", utile per la
manutenzione, con il minimo "sindacale" di servizi attivi.
Come si fa a far partire un servizio ad un certo runlevel? Ad esempio:
vorrei che httpd partisse a runlevel 3 ma non in runlevel 1.
Basta mettere nelle directory rcX.d (dove X è il runlevel desiderato) un
link allo script che si trova in init.d. Il link deve essere fatto così:
SXXhttpd -> init.d/httpd.
S vuol dire : lancia lo script httpd con l'opzione start, ossia fa partire
il servizio; XX indica il numero d'ordine: gli script vengono eseguiti dal
numero più basso a quello più alto. Se mettete K al posto di S il demone
viene fermato (lo script viene lanciato con l'opzione stop). Naturamente
devo prevedere anche lo stop, quando si esce dal runlevel. Comunque
un'occhiata allae suddette directories spiegherà molte cose.
Operativamente come faccio a mettere un nuovo script? la cosa migliore è
entrare in /etc/rc.d/init.d, copiare uno degli scripts presenti con il nuovo
nome ed editarlo per far partire il proprio processo. (comincerei con uno
script semplice :) )
si prova a mano se parte (./nomescript start) e se si ferma (./nomescript
stop); una volta che funziona si crea il link come detto sopra nelle varie
rcX.d e si fa un reboot, incrociando le dita :)
Si può intervenire sugli init scripts anche con tool grafici, in mdrake uno
o due ce ne sono, ma a memoria non ti so dire in quale menu trovarli.
Se hai difficoltà avvisa...
--
Fabio Coatti
Ferrara Linux Users Group


Rispondere a