Linux

Obiettivo: Certificazione Linux


03/06/2012
Basandomi sul testo, "Amministrare GNU/Linux di Simone Piccari", indicato dalla LICI come testo didattico al fine dello studio per gli esami di certificazioni LPI 101 e 102 utilizzerò questa pagina per riassumere i punti salienti al fine di avere dell'utile materiale di studio a me ma anche a tutti gli interessati del mondo Linux.

Capitolo 1: L' Architettura di un sistema GNU/LINUX

Linux si basa sulla fondata architettura di un sistema UNIX, il quale da oltre 30 anni garantisce sistemi stabili, affidabili ed efficenti.
Linux nasce come sistema multiutente e multitasking, predisposto quindi per l'uso da parte di più utente in maniere simultanea. Uno dei concetti nativi dell'architettura di ogni sistema Unix, quindi anche di GNU/LINUX è quello della sepazione tra kernel e i processi.
Il kernel (il nucleo del sistema) si occupa della gestione dell'hardware (CPU, memoria, periferiche) garantendo l'esecuzione contemporanea di molti processi in maniera efficiente, tutto il resto è gestione dei processi.
Da qui si identifica una cosa molto importante dei sistemi unix: la differenza tra user space e kernel space.
- user space: è l'ambiente a disposizione degli utenti dove vengono eseguiti i processi.
- kernel space: è l'ambiente in cui viene eseguito il kernel.

Quindi il kernel ha accesso diretto all'harware del computer, i processi invece, eseguiti nello user space, posso accedere alle periferiche solo attraverso delle funzioni chiamate system call, raccolte normalmente in una libreria che in Linux si chiama glibc.
In sostanza quindi il kernel è l'unico programma che viene eseguito che si occupa di costruire un ambiente dove far girare tutti i programmi.
Il kernel poi si occupa di gestire il tempo del processore, in modo da definire quale processi eseguire, scheduler, gestisce poi la memoria disponibile del sistema VM differenziandola tra i vari processi e gestendo anche lo swap nel caso di memoria esaurita, infine si occupa anche di accedere alle periferiche da parte dei programmi, driver.
Ciò rende un sistema Unix estremamente stabile.

Il funzionamento del sistema
All'avvio del sistema viene eseguito, come in tutti i Pc, il BIOS, il quale esegue alcuni controlli al sistema. Poi parte il bootloader che recupera dall'hard disk una immagine del kernel che viene caricata in memoria. Vengono lette le tabelle delle partizioni dei vari dischi, viene montata la directory / e si avvia il primo processo che prende il nome di init. Da init poi partono tutti gli altri processi e programmi, quindi da un processo ne vengono generati altri. Quindi il kernel più tutta una serie di programmi generano quelle che si identificano con il nome di distribuzioni.

06/06/2012
1.2 L'architettura dei file
In linux tutto è un file, ed i file sono organizzati sui dischi all'interno di filesystem, quindi veri file o periferiche vengono gestite nella stessa maniera. Le estensioni sono solo una convenzione ma non significano nulla per li kernel. Esistono comunque diversi tipi di file:

Il comando per gestire i file attraverso la riga di comando è il comando ls.
Se lanciato senza argomenti mostra l'elenco dei file presenti nella directory, se usato con -l  invece mostra anche le proprietà del file.
 

Ecco ulteriori opzioni del comando, per maggiori informazioni digitare man ls

La prima lettera di ciascuna riga indica il tipo di file (Tabella 1.1) il resto sono i permessi dei file. Il secondo campo indica il numero di hard link, il terzo ed il quarto indica l'utente ed il proprietario del file, il quindi la dimensione, il sesto l'ultima modifica ed infine l'ultimo indica il nome del file.
Per quanto riguarda invece il discorso del tempo si devono considerare tre tipologie di tempo:
- tempo ultima modifica  --> ls
- tempo ultimo cambiamento --> ls -c
- tempo ultimo accesso al file --> ls -u
Non esiste quindi il tempo di creazione del file.

Esiste infine il comando touch che permette di ccreare un file vuoto se non esiste oppure di modificare la data di ultimo accesso e di ultimo cambiamento del file se esiste.
Con le opzioni -a cambio solo il tempo di ultimo accesso, -m cambio solo il tempo di ultima modifica -d specifico una data -r prende i valori da un altro file.  man touch

07/06/2012


1.2.2 L'architettura di un filsystem e le proprietà dei file
Linux organizza i dati attraverso l'uso di un file system, ne supporta di diversi.
La struttura che identifica univocamente un singolo file all'interno di un filesystem si chiama inode. Ciascun file è associato ad un inode in cui sono mantenute tutte le informazioni che lo riguardano (tipo, permessi, utente e gruppo, dimensioni, tempi). L'unica informazione che non viene conservata dall'inode è il suo nome il quale è solamente un etichetta associata ad un inode.
Attraverso l'hard link due file possono puntare allo stesso inode, in sostanza sono lo stesso file. Con il comando ls -l vedo appunto quandi hard link sono legati a quell'inode (secondo gruppo)
Con ln creo dei link. Esistono due tipi di link: hard link e symbolic link
Con ls creo gli hard link --> ln file nomefile
Con ls -li vedo anche il numero dell'inode che deve essere lo stesso se ho un hard link
Posso usare ln solo se il file si trova nello stesso filesystem perchè in altri filesystem ci sono già altri file con lo stesso inode.
Questo limite viene superato con i link simbolici che si creano con il -s --> ls -s file nomefile
Verrà creato un nuovo file con un proprio inode ed il cui contenuto sarà il percorso da fare per arrivare al file.

Posso creare inoltre dei link simbolici anche sulle directory e non hard link

Con il comando rm cancello invece un file. Se il file ha dei collegamenti il comando non elimina il file ma dcrementa il numero di riferimenti ad esso fino ad azzerarlo e a cancellarlo.
Opzioni del comando:
-i --> chiede conferma prima della cancellazione
-f --> annullo ogni precedente -i
-r --> cancello ricorsivamente le directory ed il suo contenuto

Con il comando mv posso rinominare un file o spostare una lista di file in una directory


Con il comando invece cp posso copiare un file in un altro oppure copiare più file in una directory. Il file sarà creato con i permessi dell'utente che ha lanciato il comando che sarà anche il suo proprietatio. Se si vogliono
invece preservare le caratteristiche del file originale occorre usare l'opzione -p

Tutti i file che risiedono nel filesystem hanno uno specifico percorso che può essere relativo o assoluto a seconda di come lo si indica. Si indica il cambio di directory con la "/"
assoluto:  /home/utente/test/file
relativo:  test/file

Per passare da una directory ad un'altra di usa il comando cd mentre con pwd verifico il percorso in cui sono. Ci sono sempre presenti in una directory due directory nascoste "." e ".."
Per creare una directory si usa mkdir che può avere l'opzione -p che permette di creare anche delle sottodirectory
Con rmdir invece rimuovo la directory, deve essere vuota; con -p invece cancello tutto un percorso di directory.

1.2.3 L'organizzazione delle directory

L'albero delle directory in linux è unico, all'avvio il kernel monta la directory radice "/" che non è contenuta in nessun altra directory.
Con il comando tree visualizzo l'albero delle directory, con -L posso definire di quanti livelli scendere.
Esiste uno standard nell'organizzazione delle directory (FHS Filesystem Hierarchy Standard) ciò garantisce uniformità nelle varie distribuzioni.


 


08/06/2012


1.3 L'architettura dei processi


In linux qualunque processo può creare nuovi processi, avremmo quindi un padre e dei  processi figli, ad eccezione di init che non è figlio di nessuno. Con il comando pstree visualizzo l'albero genealogico de i processi.
Il comando per visualizzare la lista dei processi è ps
Lanciato da solo mostra l'elenco dei processi appartenenti all'utente che ha eseguito il comando.
Con l'opzione "a" vengono visualizzati i processi lanciati dagli altri utenti purchè abbiano un terminale, con "x" vedo i processi non associati ad un terminale, con "f" vedo anche la gerarchia dei processi, con "r" vedo i processi in esecuzione effettiva.
Le colonne del comando:
PID: identifica il processo con un codice univoco.
TTY: identifica il terminale in cui il processo è in esecuzione, se il processo non è interattivo (demone), deve quindi essere attivo anche quando non c'è nessun utente collegato avrà un "?"
STAT: mi mostra lo stato del processo

Altre opzioni di visualizzazione di ps sono: -e seleziono tutti i processi presenti, -f permette di avere una lista con più informazioni. Si identifica poi il UID che riporta il nome dell'utente che ha lanciato il processo, il PID di ciascun processo e il PPID che è il PID del padre, TIME invece identifica il momento in cui il commando è stato lanciato.
Con ps visualizzo i processi attivi al momento dell'esecuzione del programma mentre con top ho i dati in tempo reale. Opzioni di top:
-b: modalità batch con redirezione dell'output
-d: specifico un tempo di refresh diverso
Top ha comunque un menu interattivo che permette di interagire con il sistema e non solo di visualizzare i dati.
Comando free mi mostra le informazioni della memoria, fisica (prima riga), swap (l'ultima riga) mentre quella centrale mi mostra quanta memoria è occupata o libera dalle applicazioni.
Non ha opzioni, uniche scelte -b -k o -m a seconda che voglia vedere i dati in byte, kilobyte o megabyte- Con -s imposto i secondi di refresh.
Con pidof invece cerco il PID di un processo.

1.3.3 I segnali
I segnali sono una forma di comunicazione tra i processi, sono un avviso che viene inviato ad un processo e possono essere inviati a mano attraverso il comando kill. Con kill -l vedo l'elenco di tutti i processi.
Il segnale di default è SIGTERM che viene inviato solamente con kill.
Posso stabilire anche delle proprità  dei processi, variando il valore di nice con il comando nice
Deve essere seguito da un numero, positivo o negativo. Si va da 19 a -20, più alto è meno priorità ha il processo, di default, senza specificare nulla il valore è 10, solo l'amministratore può impostare valori negativi.
Il comando nice lo si può usare su un processo  quando lo si avvia, se invece è già in esecuzione si utilizza il comando renice

Nessun commento:

Posta un commento