Sistemi Operativi Salvatore Campagna Email: salvatore.campagna@polito.itsalvatore.campagna@polito.it...

Post on 02-May-2015

215 views 2 download

Transcript of Sistemi Operativi Salvatore Campagna Email: salvatore.campagna@polito.itsalvatore.campagna@polito.it...

Sistemi OperativiSalvatore CampagnaEmail: salvatore.campagna@polito.itPolitecnico di TorinoDipartimento di Automatica e Informatica

OrarioLezioni in aula

◦Martedì 11.30 – 13.00 – Aula 14Esercitazione 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

InfoURL 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 corsoParte I – Introduzione a

Linux/UNIXParte II – Introduzione alla shell e

comandi baseParte III – Comandi avanzatiParte IV – Shell scriptingParte V – L’editor Vi(m)

IntroduzioneLinux/UNIX è un sistema

operativo multiutenteQuesto 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

IntroduzioneUna 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 logout o exit o con la combinazione Ctrl + D

IntroduzioneLinux/UNIX è un sistema

operativo multitaskingIl 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

Hardware

Kernel

Librerie

Shell

Applicazioni

Struttura dei comandiL’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 programmaGli argomenti forniscono i dati su cui

il programma opera

Struttura dei comandiPer proseguire un comando sulla

riga successiva terminare la riga con “\” (backslash)

Esempio: find test_dir –name “test.*” \

-print0 | xargs -0 | grep “OK”Per eseguire una serie di

comandi usare “;” come separatore

Esempio: ls -la; cd test_dir; touch file.txt

Il file system

Caratteristiche principali:Gerarchico (organizzazione ad

albero)Formato da directory e fileNon esistono estensione e

versioneL’accesso a file e directory è

basato sui permessi

Layout file system

Il file systemLa 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 pathname assoluto o relativo

Esempio (assoluto): /home/alice/work/file.txt

Esempio (relativo): alice/work/file.txt

Il file systemIl nome di un file è una sequenza

qualunque di caratteriNo estensione e versioneE’comune usare comunque

estensioni “standard”Esempio: .c .o .so .ko .p .aUn file il cui nome comincia con

“.” non viene normalemente visualizzato

Nomi dei fileSconsigliato l’uso di caratteri

“particolari” nei nomi di file◦/ \ “ ' * ; ? [ ] ( ) ~ ◦! $ { } < > # @ & |

E’possibile usare lo spazio ma attenzione

Provare I seguenti comandi e verificare l’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-nodeStruttura 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 permessi d'accesso◦il numero di collegamenti fisici che

referenziano l'inode

I file – i-nodeOgni 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 fileUn 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 simboliciSi creano con il comando ln –s

oppure con cp -sE’ 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 fisiciSi creano con il comando lnAssocia un nome di file all’i-nodeNon può restare orfanoLa 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

PermessiL’accesso a file e directory avviene

attraverso l’assegnazione di permessiPermessi 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 directoryLettura – 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,…)

PermessiDato 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 eseguibiliSetuid: esecuzione con i privilegi

del proprietario del fileSetgid: esecuzione con i

permessi del gruppoSticky: 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 principaliGestione file e directoryGestione permessiVisualizzazione di file

Il comando manIl comando «più importante» su

un sistema UNIX/Linux è manOgni 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 manSezioni:

◦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 filecp [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 directorycd <directory>: cambia la

directory corrente con quella indicata

pwd: mostra la directory correntemkdir <directory>: crea una

nuova directoryrmdir <directory>: cancella una

directory vuota

Gestione linkln <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 permessichmod è 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 permessiEsempio: permessi con

rappresentazione numericachmod 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 permessiI simboli per indicare il permesso r, w e xModificatori:

◦+: 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 permessiEsempi:

◦chmod u+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

◦chmod a+x: aggiunge il permesso di esecuzione per tutti

◦chmod o-x: toglie il permesso di esecuzione per gli altri

Gestione permessiumask 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 permessiPer cambiare proprietario e/o

gruppo del file usare il comando chown (change owner)◦chown [opzioni] utente [:gruppo] file◦chown [opzioni] uid [:gid] file

-R opera ricorsivamente su tutti i file di una directory

Comando lsls (list segments) 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 ~/tmp

total 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 testoCon 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 testopg <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 comandimanmkdir, rmdircp, mv, rm, lnpwdchmod, chown, umasklscat, head, tail, pg, more, less