sistemi operativi salvatore campagna email: [email protected]@polito.it...
TRANSCRIPT
Sistemi OperativiSalvatore CampagnaEmail: [email protected] 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