auto start script

come creare uno script che si auto lanci all’avvio del sistema e magari con diritti di amministratore
ci sono come sempre due strade:

  • quella che usa la GUI (interfaccia grafica)
  • quella che usa solo i comandi terminale CLI

GUI (Graphic User Interface)

Lanciamo il tool apposito che si trova in APPLICAZIONI->IMPOSTAZIONI->SESSIONE E AVVIO o alternativamente in APPLICAZIONI->STRUMENTI DI SISTEMA->PREFERENZE->APPLICAZIONI D’AVVIO.  premiamo su + AGGIUNGI a volte si trova sotto linguetta Application Autostart. Questo aprirà la finestra dedicata alla costruzione del comando di lancio per l’applicazione autoavviante. Su nome indichiamo ad esempio AVVIO WEBSERVER, su descrizione inseriamone una breve per farci ricordare cosa faccia il programma es. “avvio automatico Server Web Xampp”, ciò che è fondamentale è quello che digiteremo su comando e precisamente gksu /opt/lampp/lampp start e diamo Ok. Chiudiamo SESSIONE e AVVIO. Sullo stesso principio si può applicare al programma html2pop3, logkeys o qualsiasi altro che noi vogliamo si avvi all’inizio della sessione di lavoro.

Per ora non ho trovato una alternativa all’uso della finestra terminale per la parte seguente, ma è abbastanza semplice da non dover creare grossi problemi, in ogni caso elenco i passaggi da seguire passo passo. Premere i tasti Alt + F2 questo farà aprire una “finestra di dialogo” in cui digiteremo xterm seguito dal tasto Invio (o Return che dir si voglia); per gli amanti del mouse si può optare per APPLICAZIONI->ACCESSORI->TERMINALE. Adesso si avvierà la finestra terminale e noi digitiamo sudo visudo (seguito da Invio). Spostandoci con i tasti cursori andremo a posizionarci dopo la riga root ALL=ALL ed aggiungeremo la seguente riga nome_utente ALL=NOPASSWD /opt/lampp/premere CRTL-X seguito da S e invio. A questo punto bisogna riavviare il tutto, ci verrà chiesta una sola volta dopo il riavvio la password del nome_utente impostato precedentemente. Se invece del webserver lampp intendiamo usare la procedura per html2po3 o logkeys o qualche altro applicativo dovremo sostituite la parte di /opt/lampp con la relativa directory di lavoro del eseguibile che vogliamo lanciare.

CLI (Command Line Interface)

Prima di tutto si deve aprire il terminale e capire qual’è il runlevel  in uso (il significato di runlevel è trattato nel glossario e in una futura pagina dedicata), usando l’apposito comando da terminale
miopc@miopc:/$ runlevel Il terminale ci restituirà come risposta un numero solitamente N 2 o N 3 questo è il livello di lavoro o di funzionamento (run level), specificatamente questo si trova posizionato in /etc/rc2.d/ o /etc/rc3.d/a secondo del runlevel ottenuto.Ora proviamo a creare uno script ed a posizionarlo nel runlevel specifico. Per fare questo dovremo essere loggati come utente root  es. sudo -s (per capire se come si è loggati basta guardare il carattere che precede il cursore nella finestra terminale $ utente normale # utente root [superutente], come aiuto mnemonico si può pensare che “i graffi vinco sui soldi”) o far precedere le singole righe dal comando sudo, è quindi caldamente consigliato collegare le sinapsi nervose quando si eseguono operazioni potenzialmente pericolose, poi non si torna indietro in caso di danni e non voglio sentire lamentele e piagnistei per perdite di dati accidentali o peggio…, e bisogna usare anche alcuni comandi [echo, chmod, ln, update-rc.d] per ulteriori dettagli vedi la sezione Terminale e Comandi da Tastiera quindi utilizzando come esempio alcuni programmi che potrebbero risultare comodo in condizioni di auto avvio all’accensione del computer, penso ad esempio a qualche webserver (lampp), ma anche ad altri applicativi come html2pop3 o lo stesso logkeys trattato in un altra sezione di questo sito digitiamo:
miopc@miopc:/# echo “sudo  /opt/lampp/lampp start” > /etc/init.d/mio_script 
oppure
miopc@miopc:/# echo “sudo   /home/directory_utente/html2pop3.sh” > /etc/init.d/mio_script 
o ancora
miopc@miopc:/# echo “sudo  logkeys -m it.map -s -o /home/directory_utente/servizio/servizio.log” > /etc/init.d/mio_script 
Il comando echocrea un file di testo chiamato  mio_script contente il comando per avviare e gestire l’applicazione da avviare

  • lampp
  • html2pop3 La posizione del file dipende dalla cartella dove è stato scompattato il file gz scaricato da Intenet
  • logkeys in questo caso con il supporto della mappatura della tastiera italiana ed utilizzando il file di output, dove viene registrato il lavoro, presente nel indirizzo assoluto /home/directory_utente/servizio, va da se che sia il file mappe che il file .log devono essere stati creati prima come indicato nel tutorial specifico e bisogna sostituire la dicitura directory_utente con il nome della nome dell’utente dove si è creata al cartella servizio per essere sicuri di quel sia il nome_utente si può usare il comando whoami, nota per chi intende far malanni, di cui io non mi riterrò assolutamente responsabile, visto che le guide hanno solo scopo didattico e non per incentivare usi illeciti [utente avvisato…],

comunque per funzionare in background lampp, html2pop3, logkeys… ma anche quasi tutti gli applicativi, hanno bisogno di venir inizializzato con i privilegi di root, o super utente che di si voglia, (così da girare al livello più alto delle priorità) quindi usando il comando sudo per gli utenti Ubuntu e su per quasi tutte le altre distribuzioni Linux.
Chi è più attento avrà notato che lo script viene posizionato in /etc/init.d e non direttamente in /etc/rc2.d/ come sarebbe primo impulso, questo perché usando un semplice link simbolico (collegamento) si può utilizzare anche su altri runlevel ed inoltre si riesce a creare un sistema di avvio / arresto e priorità flessibile (spiegazioni nell’apposita guida).
miopc@miopc:/# chmod +x /etc/init.d/mio_script  Il comando chmod abilita la modalità esecuzione del nostro file
Il vero punto critico di tutta la procedura: la creazione del collegamento simbolico con assegnazione della priorità di esecuzione. Esistono due strade, di cui la prima specifica per le distribuzioni Debian, che usano il comando
miopc@miopc:/# update-rc.d mio_script defaults Il comando update-rc.d crea automaticamente i link simbolici nei runlevel, per esigenze specifiche vedere sul sito o usando il comando man
miopc@miopc:/# ln -s /etc/init.d/mio_script /etc/rc2.d/S99mio_script  Questa è invece la seconda strada; usare il comando ln -s e aggiungendo S99 prima del nome del nostro file (dove S sta per Start e 99 indica che questo processo va avviato in coda a tutti gli altri, perché non ha necessità specifiche)
Ora riavviando il sistema dovremmo avere uno script che si avvia ad ogni boot.Alcune note sui problemi sorti durante i test: se invece di uno script autocostruito si decide di lanciare un file binario (programma vero e proprio) sarà necessario utilizzare altri comandi tipo nohup e sleep, ma qui si tratta di livello di conoscenza per ora troppo specifico, per trattarlo in queste pagine. Altra particolarità se si lancia update-rc.d dopo aver dato il comando ln -s si otterrà un messaggio di errore, infatti update-rc.d non può creare i link simbolici dove già esistono, in questo caso bisogna prima rimuoveli e poi ri-lanciare il comando.

Lascia un commento