TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Linux hardcore
Prendiamo fiato e immergiamoci nei centri nevralgici del sistema per esplorarne ogni aspetto, anche quelli più nascosti. Dai meandri del kernel alla gestione dei servizi, fino alla configurazione del sistema di avvio. Da oggi in poi il PC non avrà più
(pagina 3 di 9)


TUTTI I TIPI DI RUNLEVEL
Tabella riepilogativa dei livelli di esecuzione disponibili
NUMERODIRECTORY CORRISPONDENTEQUANDO VIENE RICHIAMATO0 /etc/rc0.d Halt (arresto) del sistema1 /etc/rc1.d Modalità singolo utenteDa 2 a 5 Da /etc/rc2.d Modalità multiutente (con oa /etc/rc5.d senza interfaccia graficaa seconda di quale si usa)6 /etc/rc6.d Reboot della macchinaS /etc/rcS.d Modalità singolo utente (attivabile al boot del PC)Eliminare i servizi superfluiCon sysv-rc-conf possiamo dare una “ripulita” a quelli eseguiti all'avvio del PCGestione facile

Installiamo il programma sysvrc- conf con “sudo apt-get install sysv-rc-conf” e subito dopo eseguiamolo con il comando “sudo sysv-rc-conf”. Nella schermata che appare abbiamo, in alto, da sinistra verso destra, i vari runlevel disponibili, quindi dall'alto verso il basso, troviamo i nomi dei servizi disponibili. Il runlevel corrente

Il runlevel di default è il 2, modifichiamolo. Con i tasti freccia sù/giù raggiungiamo il servizio che non vogliamo eseguire all'avvio (nell'esempio, apport), quindi con i tasti freccia sinistra/ destra spostiamoci sul livello 2. Premiamo Spazio in modo da togliere il segno di spunta dal servizio. Servizi attivi e non

A questo punto possiamo gestire i servizi superflui per la sessione corrente. Spostiamoci su uno di essi e premiamo il tasto “-” per fermarlo, dopodiché nella nuova schermata premiamo Invio. Per avviarne uno, invece, premiamo il tasto “+” e, infine “q” per uscire dal programma.Un demone nel nostro PcI demoni eseguiti al boot del PC sono posizionati all'interno della directory /etc/init.d (in realtà qui sono presenti solo i loro script di esecuzione) e vengono avviati seguendo le indicazioni presenti nelle cartelle /etc/rcX.d (/etc/rc0.d, /etc/rc1.d, ecc...). I servizi presenti in /etc/init.d, oltre ad essere richiamati automaticamente dal sistema (non in tutti i casi, dipende dalle impostazioni), possono essere avviati da root facendoli seguire da alcuni parametri: “start” avvia un servizio (ad esempio, “sudo /etc/init.d/apache start”), “stop” lo arresta, mentre “restart” prima lo ferma e, subito dopo, lo fa ripartire. Infine, il parametro “reload”, per fare in modo che il demone ricarichi i suoi file di configurazione, ad esempio dopo una modifica alla configurazione o dopo un aggiornamento. Ad esempio per eseguire il server web Apche 2 bisogna utilizzare il comando /etc/init.d/apche2 start.Un runlevel diversoCome configurare upstarti, il sistema che si occupa di gestire i servizi dal boot allo shutdownFile di configurazione

Eseguiamo “sudo nano /etc/inittab” per avviare l'editor nanoe creare il file, vuoto, /etc/inittab, nel quale imposteremo il nuovo runlevel di default. A questo punto, possiamo usare i tasti freccia per spostarci su una nuova riga, Ctrl+O e Invio per salvare il file, Ctrl+X per uscire dall’editor e tornare alla shell. Runlevel di default

Per scegliere 3 come runlevel predefinito aggiungiamo la riga “id:3:initdefault:”. Se da questo livello abbiamo eliminato i display manager GDM o KDM, al boot non sarà avviato l'ambiente grafico. Per tornare al runlevel 2 è sufficiente modificare la riga di /etc/inittab in “id:2:initdefault:”, salvare e uscire. Shutdown diverso

In genere, il sistema si riavvia con Ctrl+Alt+Del. Ma è possibile cambiare questo comando, ad esempio per spegnere il PC. Eseguiamo “sudo nano /etc/event.d/control-alt-delete”, spostiamoci sulla riga che inizia con “exec” e cambiamo “-r now” con “-h now”. Salviamo ed usciamo.Cosa sono e come funzionano i runlevel Le directory /etc/rcX.d collegano i servizi presenti in /etc/init.d con i “runlevel”. Ma di cosa si tratta esattamente? Un runlevel (detto anche livello di esecuzione) è uno stato di funzionamento specifico del sistema, che dipende sostanzialmente dai servizi attivi sulla macchina e dalle operazioni che è possibile eseguire: c'è il runlevel invocato al momento del boot, quello richiamato prima che la macchina venga spenta, uno per eseguire il sistema in modalità console, un altro per eseguirlo completo di interfaccia grafica e così via (nella tabella “Tutti i tipi di runlevel”, è disponibile l'elenco completo di quelli attivabili). In pratica, ogni runlevel, equivale a uno specifico modo di eseguire il sistema, determinato da più o meno servizi e programmi disponibili. Detto questo, è chiaro che ogni directory /etc/rcX.d contiene dei collegamenti simbolici a tutti i servizi che vengono richiamati, per essere eseguiti o fermati, in un determinato runlevel (per questo motivo, ad esempio, /etc/rc3.d punta al terzo runlevel). Chiaramente, è possibile modificare i demoni richiamati da un runlevel: nel tutorial “Eliminare i servizi superflui”, scopriremo proprio come “sfoltire” l'elenco dei demoni inseriti nel runlevel 2 (nella configurazione di default di Ubuntu, è il livello più importante per l'utente e caricato come predefinito), così da ridurre sia i tempi di avvio della macchina, sia la memoria occupata dai processi in background quasi sempre inutilizzati. Ovviamente, su alcune distribuzioni il runlevel di default potrebbe essere diverso. È possibile verificare qual'è quello in uso mediante il comando runlevel. Demoni “on demand” E se volessimo avviare alcuni servizi solo quando necessario? È possibile farlo utilizzando il “superdemone” inetd, il quale non fa altro che avviare un determinato servizio non appena riceve una richiesta sulla porta a questo abbinata. Ad esempio, se qualcuno fa una richiesta sulla porta 22, inetd richiama il server SSH installato sulla macchina e così via. Il file di configurazione di inetd è /etc/inetd.conf, mentre in /etc/services sono elencate le porte ed i servizi a cui queste sono legate. L'amministrazione di inetd è piuttosto complessa, quindi ci limiteremo a fornire qualche informazione di base. Ciascuna linea di inetd.conf rappresenta un servizio ed è composta dai seguenti argomenti, separati da uno o più spazi: in ordine service, type, protocol, wait, user, server e arguments. Ecco una riga di esempio:ssh stream tcp nowait root /usr/sbin/sshd sshd -iSoffermiamoci sugli argomenti più rilevanti presenti in questa linea. Il primo elemento (service) indica che il servizio fornito è SSH, mentre l'utente (user) con cui viene avviato il servizio è root; infine, l'argomento server contiene il percorso completo dell'eseguibile, in questo caso /usr/sbin/sshd, seguito dagli arguments, cioè le opzioni con cui è necessario richiamare il programma (il parametro “-i” di sshd specifica che il server è avviato mediante inetd).Sveglia alle 7!La guida per eseguire automaticamente comandi ad orari prestabiliti grazie all'ottimo sistema di pianificazione degli eventi, “scheduling”, integrato in GNU/LinuxAbbiamo creato un meraviglioso script per il backup di sistema e vorremmo che questo fosse eseguito tutti giorni, magari nelle ore in cui il nostro PC è meno occupato? Quello che ci serve è un programma di “scheduling”. Per questo compito specifico la scelta migliore è senz'altro cron, lo storico tool Unix presente in tutte le distribuzioni. E quando abbiamo solo bisogno di eseguirlo una sola volta, magari in un momento specifico? In questi casi è meglio usare at. Nel tutorial “Comandi “ad orologeria con cron”, creeremo passo passo un file di crontab per pianificare l'esecuzione di un comando particolare. In pratica, si tratta del file che contiene i comandi da eseguire via cron da parte di un determinato utente. L'utilizzo di at è più immediato, basta invocarlo facendolo seguire da una data: questa può essere nel formato ore:minuti (ad esempio, “at 19:30” indica le 19 e 30 di oggi), oppure può contenere ora e data complete (“at 12:00 august 5”, cioè il 5 Agosto alle 12); oppure, ancora, possiamo utilizzare alcune parole chiave come “days”, “hours” e “weeks” abbinate alla stringa “now +” . Ad esempio, scrivendo “at now + 4 hours” il sistema eseguirà automaticamente il comando indicato tra quattro ore esatte. Creata la linea di at che desideriamo, possiamo premere Invio. A questo punto, non resta che inserire il comando da far eseguire ad at e premere Ctrl+D per memorizzarlo. Facciamo la stessa cosa per ogni altro comando.Alla scoperta di Anacron Lo scheduler perfetto per i computer desktop Se la nostra macchina non resta mai accesa 24/24h si corre il rischio che possa trovarsi spenta proprio quando cron deve eseguire un comando. Niente paura, in questi casi c'è anacron: questo programma utilizza come riferimento un intervallo di giorni invece che un orario specifico. Per configurarlo eseguiamo il comando “sudo nano /etc/anacrontab”.La struttura delle righe presenti nel file di configurazione anacrontab è la seguente: intervallo (ogni quanti giorni), attesa (quanti minuti attendere dall'avvio del sistema), nome(un nome univoco per il comando), comando. Ad esempio, per eseguire lo script di backup ogni 10 giorni, eseguendolo 45 minuti dopo il boot, bisogna aggiungere ad /etc/anacrontab la direttiva seguente: “10 45 backup /usr/local/bin/backup”.Comandi “ad orologeria” con cronScopriamo come eseguire a scadenze specifiche un determinato comandoEditor di default

Quando si modifica un file di crontab, il sistema usa automaticamente l'editor di default: vediamo come richiamare nanoin modo predefinito. Apriamo una console ed eseguiamo “sudo update- alternatives --config editor”. Nell'elenco che appare selezioniamo il numero corrispondente a /bin/nano e premiamo Invio. Struttura di Crontab

Con “crontab -e”eseguiamo nano ed apriamo il file crontab per l'utente che stiamo utilizzando. Per ora contiene solo una linea commentata (il primo carattere è #), che descrive la struttura di un comando. Ogni riga è composta da minuti, ora, giorno del mese, mese, giorno della settimana e, infine, il comando. Il comando da eseguire

Facciamo in modo che cron esegua il solito script di backup tutti i giorni alle 6:00. In questo caso, la riga di crontab dovrà essere la seguente: “00 06 * * * /usr/local/bin/backup”. Il carattere “*” sta per “qualsiasi” (giorno, mese, ecc...). Ricordate di indicare sempre il percorso completo del comando.Il sistema al microscopioDalla gestione dei dispositivi alla personalizzazione della shell fino al montaggio di hard disk e partizioni. Tutto questo e molto altro per ottenere un PC sotto controllo totaleArrivati a questo punto, possiamo approfondire alcuni aspetti dell'amministrazione del sistema meno fondamentali di quelli affrontati in precedenza ma senz'altro importanti ai fini dell’ottimizzazione della distribuzione. Approfondimenti ulteriori, insomma, verso il completo adattamento del PC alle nostre esigenze. In questa sezione della Cover Story, quindi, vedremo come montare i nostri dispositivi (in particolare quelli rimovibili) sfruttando al meglio le opzioni disponibili, impareremo a conoscere e apprezzare la flessibilità offerta dal sistema udev e, quindi, creeremo delle vere e proprie “macro” per le operazioni più ripetitive che bisogna eseguire dalla riga di comando. Montare e smontareCon il comando mount “montiamo” rendendolo visibile al sistema, il contenuto di un dispositivo (una partizione dell'hard disk, ad esempio) all'interno di una cartella a nostra scelta. Ecco un esempio classico, che monta sulla directory /mnt/disco il contenuto di /dev/hda3 (la terza partizione del primo hard disk /dev/hda): “sudo mount /dev/hda3 /mnt/disco”.File system sempre al massimoPoche modifiche al file di configurazione /etc/fstab per aumentare le prestazioni di una partizione Ext3Il file /etc/fstab