420 likes | 625 Views
Sistemi Operativi. Salvatore Campagna Email : salvatore.campagna@polito.it Politecnico di Torino Dipartimento di Automatica e Informatica. Orario. Lezioni in aula Martedì 11.30 – 13.00 – Aula 14 Esercitazione in laboratorio
E N D
Sistemi Operativi Salvatore Campagna Email: salvatore.campagna@polito.it Politecnico di Torino Dipartimento di Automatica e Informatica
Orario • Lezioni in aula • Martedì 11.30 – 13.00 – Aula 14 • Esercitazione in laboratorio • Squadra B: Martedì 16.00 – 19.00 (16.00 – 17.30 assistito) - LABINF • Squadra A: Mercoledì 16.00 – 19.00 (16.00 – 17.30 assistito) – LAIB 1D • Squadre • A: ABBATE – LECCA • B: LEGORA - ZECCHI
Info • URL slide lezione e esercitazione • http://www.cad.polito.it/~campagna/so/ • Risorse cartacee e elettroniche • http://tldp.org/LDP/abs/html/ • http://tldp.org/LDP/abs/abs-guide.pdf • “The Linux A-Z”, Phil Cornes ISBN 0132347091 • Internet
Programma del corso • Parte I – Introduzione a Linux/UNIX • Parte II – Introduzione alla shell e comandi base • Parte III – Comandi avanzati • Parte IV – Shellscripting • Parte V – L’editor Vi(m)
Introduzione • Linux/UNIX è un sistema operativo multiutente • Questo vuol dire che può essere utilizzato da più utenti contemporaneamente • E’perciò necessaria una procedura di login per l’identificazione e l’accesso al sistema
Introduzione • Una sessione di lavoro inizia con l’invocazione, da parte dell’ambiente, del programma login • L’utente accede al sistema fornendo nome utente e password • Dopo l’accesso l’utente è identificato da uno user ID • La sessione termina con i comandi logouto exito con la combinazione Ctrl + D
Introduzione • Linux/UNIX è un sistema operativo multitasking • Il multitasking rappresenta la capacità di un sistema (dare l’impressione per sistemi a core singolo)di eseguire più programmi contemporaneamente • L’obiettivo è quello di massimizzare e ottimizzare l’utilizzo delle risorse
Introduzione Il sistema operativo è organizzato su più livelli detti layer Applicazioni Shell Librerie Kernel Hardware
Struttura dei comandi • L’interazione tra l’utente e il sistema operativo avviene tramite comandi impartiti attraverso una shell • La struttura generica di un comando è: comando [opzioni] [argomenti] • Le opzioni modificano il comportamento del programma • Gli argomenti forniscono i dati su cui il programma opera
Struttura dei comandi • Per proseguire un comando sulla riga successiva terminare la riga con “\” (backslash) Esempio: findtest_dir–name “test.*” \ -print0 | xargs -0 | grep “OK” • Per eseguire una serie di comandi usare “;” come separatore Esempio: ls -la; cd test_dir; touchfile.txt
Il file system Caratteristiche principali: • Gerarchico (organizzazione ad albero) • Formato da directory e file • Non esistono estensione e versione • L’accesso a file e directory è basato sui permessi
Il file system • La directory radice è “/” (slash) • La directory corrente è indicata con “.” • La directory padre della directory corrente è indicata con “..” • Il separatore di directory è “/” (slash) • Ogni file o directory è raggiungibile attreverso un pathnameassoluto o relativo Esempio (assoluto): /home/alice/work/file.txt Esempio (relativo): alice/work/file.txt
Il file system • Il nome di un file è una sequenza qualunque di caratteri • No estensione e versione • E’comune usare comunque estensioni “standard” Esempio: .c .o .so .ko .p .a • Un file il cui nome comincia con “.” non viene normalemente visualizzato
Nomi dei file • Sconsigliato l’uso di caratteri “particolari” nei nomi di file • / \ “ ' * ; ? [ ] ( ) ~ • ! $ { } < > # @ & | • E’possibileusare lo spazio ma attenzione • Provare I seguenticomandi e verificarel’effetto: • touch file prova.txt (crea due file) • touch “file prova.txt” (crea un file) • touch file\ prova2.txt (crea un file)
I file – i-node • Struttura dati che archivia: • il proprietario e il gruppo di appartenenza • dimensione del file e la sua locazione fisica; • le informazioni temporali di modifica (mtime), ultimo accesso (atime) e di cambio di stato (ctime) • i permessid'accesso • il numero di collegamenti fisici che referenziano l'inode
I file – i-node • Ogni i-node è identificato da un numero univoco (i-node id) per il dispositivo • Ogni file è un collegamento fisico ad un i-node (associazione nome collegamento fisico i-node id) • Quando si accede a un file si recuperano le informazioni dal suo i-node
Collegamenti tra file • Un collegamento è un oggetto del file system che permette di fare riferimento ad un altro file del file system attraverso un nome diverso • Il file originale è accessibile attraverso più file • In UNIX/Linux esistono due tipi di collegamenti (link) • Simbolici (soft link) • Fisici (hard link)
Collegamenti simbolici • Si creano con il comando ln –s oppure con cp -s • E’ un file contenente un percorso relativo o assoluto al file o directory a cui fa riferimento • Se il file puntato viene rimosso il link simbolico rimane orfano • Il link simbolico può fare riferimento anche ad un file su un altro file system
Collegamenti fisici • Si creano con il comando ln • Associa un nome di file all’i-node • Non può restare orfano • La rimozione di un file avviene solo se tutti gli hard link sono rimossi • I link e il file puntato dal link devono far parte dello stesso file system
Permessi • L’accesso a file e directory avviene attraverso l’assegnazione di permessi • Permessi di base o attributi • Lettura – read (r) • Scrittura – write (w) • Esecuzione – exec (x) • Tre classi di utente • Proprietario del file o directory – user (u) • Gruppo a cui appartiene il proprietario - group(g) • Gli altri - others (o)
Permessi su directory • Lettura – Read(r) – Possibilità di elencare il contenuto (ls) • Scrittura – Write (w) – Possibilità di creare e/o cancellare file (touch, rm,…) • Execuzione – Exec (x) – Possibilità di attreversare la directory (cd,…)
Permessi • Dato un file i permessi sono espressi d a una tripletta a cui corrisponde una valore binario e/o ottale • 1 indica permesso settato, 0 permesso non settato • Corrispondenza 1:1 con una stringa binaria o ottale • Esempio: rwxr-xr-x = 111101101 = 755 • Permssi per user, group e others
Permessi speciali per eseguibili • Setuid: esecuzione con i privilegi del proprietario del file • Setgid: esecuzione con i permessi del gruppo • Sticky: se settatto per una directory indica che i file possono essere cancellati e spostati solamente dagli utenti proprietari o dal proprietario della directory o da root
Comandi principali • Gestione file e directory • Gestione permessi • Visualizzazione di file
Il comando man • Il comando «più importante» su un sistema UNIX/Linux è man • Ogni pagina man è un documento esplicativo di un comando • Per accedere a una pagina man si usa il comando man [sezione] <comando> • La sezione specifica la categoria di manuale al quale si vuole accedere
Il comando man • Sezioni: • 1: comandi generali • 2: chiamate di sistema • 3: funzioni della libreria standard del C • 4: file speciali e driver • 5: formato di file e convenzioni • 6: giochi e screensaver • 7: miscellanea • 8: amministrazione del sistema, comandi e demoni
Copia e spostamento di file • cp [opzioni] <src> <dest>: copia uno o più file da SRC a DEST (che può essere una directory) • rm [opzioni] <file>: cancella il file • mv [opzioni] <src> <dest>: sposta file e directory in altri file (rinomina) o directory
Opzioni comuni • -r (recursive): esegue ricorsivamente su tutti i file contenuti nelle sottodirectory • -i (interactive): chiede conferma per ognuno dei file • -f (force): esegue il comando senza chiedere conferma
Gestione directory • cd <directory>: cambia la directory corrente con quella indicata • pwd: mostra la directory corrente • mkdir <directory>: crea una nuova directory • rmdir <directory>: cancella una directory vuota
Gestione link • ln <target> <alias>: crea un hard link (link fisico) <alias> a un file o directory <target> • ln –s <target> <alias>: crea un soft link (link simbolico) <alias> a un file o directory <target>
Cambiare i permessi • chmod è il comando per cambiare i permessi di accesso ai file • chmod <permessi> <file> • I permessi possono essere specificati simbolicamente o numericamente • La rappresentazione numerica sfrutta la corrispondenza permessi valore ottale
Cambiare i permessi • Esempio: permessi con rappresentazione numerica chmod 644 <file>:equivale ad un file con permessi rw-r--r-- = 110 100 100, per u, g, a • La notazione simbolica usa i seguenti simboli per indicare l’utente: • u: (user) proprietario • g: (group) gruppo del proprietario • o: (others) altri • a: (all) tutti
Cambiare i permessi • I simboli per indicare il permesso r, w e x • Modificatori: • +: aggiunge permessi specificati alle classi selezionate; non rimuove permessi già concessi ma non specificati • =: imposta i permessi specificati nelle classi selezionate; rimuove eventuali permessi già concessi ma non specificati • -: rimuove i permessi specificati dalle classi selezionate
Cambiare i permessi • Esempi: • chmodu+r:aggiunge il permesso di lettura al proprietario • chmod u=wx: imposta i permessi di scrittura e esecuzione per il proprietario e rimuove tutti gli altri • chmoda+x: aggiunge il permesso di esecuzione per tutti • chmod o-x: toglie il permesso di esecuzione per gli altri
Gestione permessi • umask permette di impostare i permessi da negare di default quando un file viene creato • umask <maschera> • Il comando senza la maschera restituisce la maschera corrente • Se la maschera è 022 allora i file vengono creati con permessi 755 = rwxr-xr-x
Gestione permessi • Per cambiare proprietario e/o gruppo del file usare il comando chown (changeowner) • chown [opzioni] utente [:gruppo] file • chown [opzioni] uid [:gid] file • -R opera ricorsivamente su tutti i file di una directory
Comando ls • ls (listsegments) visualizza l’elenco di file in una directory e le informazioni riguardanti ciascun file • Opzioni comuni: • -a: visualizza file nascosti (che iniziano con “.”) • -l: formato esteso • -g: include il gruppo • -t: ordina i file in ordine temporale • -r: inverte l’ordine • -R: opera ricorsivamente sulle sottodirectory
Comando ls – Un esempio # ls -alg ~/tmptotal 84drwx------ 6 maino staff 512 Sep 1 16:14 .drwxr-xr-x 19 maino staff 1024 Sep 6 09:06 ..-rw-r--r-- 1 maino staff 1240 Jan 21 1992 AA.readmedrwxr-x--- 2 maino staff 512 May 22 14:08 examples-rw------- 1 maino staff 2416 Jun 30 15:24 gendata.c-rw------- 1 maino staff 332 Jun 18 15:29 local.cdrwxr-xr-x 2 maino staff 512 May 22 14:08 man-rw-r----- 1 maino staff 27930 Mar 12 23:19 new.tex-rw------- 1 maino staff 28077 Mar 12 22:52 numer.tex-rw-r----- 1 maino staff 70 Jun 2 18:00 prova.tex-rw-r----- 1 maino staff 1364 May 6 14:20 random.c-rw-r----- 1 maino staff 62 May 6 14:21 random.hdrwx------ 2 maino staff 512 May 25 14:36 testprof
Visualizzazione di file di testo • Con un editor interattivo: vi, emacs, … • cat <file1>[<file2>…]:(catenate): visualizza i file passati sulla riga di comando concatenandoli (in successione) • head [-n <#righe>] <file>: visualizza le prime n righe di un file • tail [-n <#righe>] <file>: visualizza le ultime n righe di un file
Visualizzazione file di testo • pg <file> • more <file> • less <file> • Durante la visualizzazione • spazio: prossima pagina • return: (Invio): prossima riga • b: pagina precedente • /pattern: prossima occorrenza di pattern • ?pattern: occorrenza precedente di pattern • q: chiude l’editor
Riepilogo comandi • man • mkdir, rmdir • cp, mv, rm, ln • pwd • chmod, chown, umask • ls • cat, head, tail, pg, more, less