Il sistema operativo UNIX/LINUX Niccolò Battezzati <[email protected]> Politecnico di Torino Dip. Automatica e Informatica Sistemi Operativi - Introduzione 1 Organizzazione SISTEMI OPERATIVI Docente: Prof. Pietro Laface ([email protected]) Esercitatore: Ing. Niccolò Battezzati ([email protected]) Esercitazioni in aula – GIO 12:30 – 14:30 (AULA 14) Sistemi Operativi - Introduzione Laboratorio – GIO 14:30 – 16:30 – GIO 16:30 – 18:30 (LABINF – account!!!) 2 Informazioni “utili” Web site corso: ulisse.polito.it/matdid/3ing_inf_N5030_TO_0/ come trovarlo: Google (“ulisse sistemi operativi”) laboratorio: http://www.cad.polito.it/staff/battezzati (didattica) libri di testo: – “The Linux A-Z”, Phil Cornes ISBN 0132347091 – Il web!!! Sistemi Operativi - Introduzione 3 Informazioni “utili” Per avere una distribuzione linux sul proprio pc: 1. 2. 3. 4. www.ubuntu.com/getubuntu/download masterizzare il cd con l’ISO avviare il pc dal cd usare Ubuntu 1. in versione LIVE (funzionalita` ridotte) 2. installarlo sul pc (richiede di partizionare il disco) 3. installarlo su una macchina virtuale (Virtual Box, VMWare, Qemu) Sistemi Operativi - Introduzione 4 Programma • Linux: introduzione e comandi principali • vi(m): un editor di testo • Shell: l’interprete dei comandi • Linux: dettagli e comandi avanzati • Shell: uso avanzato e script Sistemi Operativi - Introduzione 5 Indice • Introduzione • Il file system • I comandi principali Sistemi Operativi - Introduzione 7 Indice • Introduzione • Il file system • I comandi principali Sistemi Operativi - Introduzione 8 Collegamento col sistema • Aprendo una sessione in locale: • username • password • Da un altro pc dotato di connesione TCP/IP: • telnet <hostname> • ssh [<username>@] <hostname> Sistemi Operativi - Introduzione 10 Caratteristiche principali • Multiutente (utenti multipli simultaneamente) a ogni user sono associati: Esiste l’utente “root” – username opp. – uid si puo` usare “sudo” – gid – password – home – shell – ... Sistemi Operativi - Introduzione 11 Caratteristiche principali • Multitask (processi multipli “simultaneamente”) a ogni processo sono associati: – user – pid – ppid – status – tty – ... Sistemi Operativi - Introduzione 12 La struttura Programs Shell Unix kernel HW Sistemi Operativi - Introduzione 13 I comandi in UNIX • La sintassi di un generico comando UNIX è: comando [-opzioni] [argomenti] • I comandi troppo lunghi possono essere continuati sulla riga successiva battendo “\” come ultimo carattere della riga • Si possono dare più comandi sulla stessa riga separandoli con “;” comando1 ; comando2 ; ... Essi saranno eseguiti in sequenza Sistemi Operativi - Introduzione 14 Il manuale in linea • Tutti i comandi di Unix sono documentati: –man <comando> – apropos <termine> – whatis <comando> • info Sistemi Operativi - Introduzione 15 Indice • Introduzione • Il file system • I comandi principali Sistemi Operativi - Introduzione 16 Il file system UNIX • Caratteristiche: – gerarchico – organizzazione a directory – uniformità di notazione (dischi, directory, file) – non esistono estensione e versione – permessi Sistemi Operativi - Introduzione 17 La gerarchia del file system • La directory radice dell’albero e` “/“ (slash) • La directory corrente e` indicata con "." (dot) • Il padre della directory corrente è indicato con ".." (dot dot) • Le directory si separano con “/“ Sistemi Operativi - Introduzione 19 I nomi dei file • Il nome di un file può essere una sequenza di caratteri qualunque • Non esistono estensione e versione • Esistono comunque desinenze o nomi molto usati: .c .f .p .o .a .so a.out core • Se il nome di un file inizia col carattere punto "." è detto file nascosto perchè normalmente non viene elencato Sistemi Operativi - Introduzione 20 I nomi dei file (cont.) • Si sconsiglia di utilizzare i seguenti caratteri nei nomi dei file: –/ \ “ ' * ; ? [ ] ( ) ~ –! $ { } < > # @ & | • Si può usare il carattere spazio (ma attenzione!) – Provate a scrivere il seguente programma in C: Il programma prende sulla linea di comando (argv) due parametri, il nome di due file. Successivamente legge prima il primo e poi il secondo e li stampa a video. NOTA: i nomi dei due file possono contenere spazi!!! Sistemi Operativi - Introduzione 21 Il path Per indicare un file all’interno del file system si deve specificarne il path: – path assoluto: /dir1/dir2/file – path relativo: subdir1/subdir2/file Sistemi Operativi - Introduzione 22 I file: classificazione • Un solo tipo fisico di file: – byte stream (sequenza di byte) • Quattro tipi logici di file: – file ordinario: ad esempio, i file di testo, eseguibili ... – directory: contiene nomi ed indirizzi di altri file – special file: un entry point per un dispositivo di I/O – link: un puntatore ad un altro file Sistemi Operativi - Introduzione 23 I permessi dei file • Tre permessi di base: – read (r) : permesso di lettura – write (w) : permesso di scrittura – execute (x) : permesso di esecuzione • Tre tipi di utenti: Tre numeri ottali definiscono – user (u) : il proprietario i permessi di un file: – group (g) : il gruppo rwx rwx rwx – others (o) : gli altri Es. 755 – 644 – … Sistemi Operativi - Introduzione 25 Le protezioni dei direttori • Le protezioni di una directory hanno un significato particolare: – x: attraversamento della directory – r: elenco dei file – w: creazione e/o cancellazione di file Sistemi Operativi - Introduzione 26 Modi speciali • Tre modi speciali (per i file eseguibili): – setuid (s) : viene eseguito come se fosse root ad eseguirlo – setgid (S) : viene eseguito con lo stesso GID di root – sticky (t) : l'inamovibile; se settato per una directory, allora unicamente il proprietario del file contenuto o della directory (o root) può cancellare o rinominare i file nella cartella; il divieto vale anche qualora la persona abbia i permessi per scrivere nella directory Sistemi Operativi - Introduzione 27 Indice • Introduzione • Il file system • I comandi principali Sistemi Operativi - Introduzione 28 Gestione file ordinari • cp [-fir] src1 src2 ... dest – copia uno o più file (eventualmente in una directory) • rm [-fir] file1 file2 … – cancella i file elencati • mv [-fi] file1 file2 ... dest – sposta (rinomina) uno o più file, eventualmente in una directory Sistemi Operativi - Introduzione 29 Gestione file ordinari (cont.) • Opzioni: – -f non chiede mai conferma – -i chiede conferma per ciascun file – -r opera recursivamente su tutti i file contenuti nei sottodirettori Sistemi Operativi - Introduzione 30 Gestione directory • cd <dir> – cambia il direttorio a quello indicato • pwd – mostra il nome del direttorio corrente • mkdir <dir> – crea il direttorio indicato • rmdir <dir> – cancella il direttorio indicato (deve essere vuoto) Sistemi Operativi - Introduzione 31 Gestione permessi • Per cambiare le protezioni ai file: chmod [-R] protezioni file • Protezioni specificate in modo assoluto – tre numeri ottali Esempi: – chmod 775 nomefile Sistemi Operativi - Introduzione 33 Gestione permessi (cont.) • Protezioni specificate in modo simbolico – una stringa di tre caratteri 1) u(ser), g(roup), o(ther), a(ll) 2) +, -, = 3) r, w, x Esempi: – chmod g+r nomefile Sistemi Operativi - Introduzione 34 Gestione permessi (cont.) • umask – mostra (in forma assoluta) i permessi che sono negati quando si crea un file (la maschera delle protezioni); ad es. con modo 666, si ha, se umask riporta 022, 666 & ~022 = 644 (man 2 umask) • umask maschera – per definire la maschera delle protezioni Sistemi Operativi - Introduzione 35 Gestione permessi (cont.) • Per cambiare il proprietario e/o gruppo dei file: chown [-R] utente[:gruppo] file chown [-R] uid[:gid] file • In entrambi i casi, con l'opzione -R opera recursivamente su tutti i file delle sottodirectory Sistemi Operativi - Introduzione 36 Il comando ls • Visualizza l’elenco dei file con le loro caratteristiche • ls [-opzioni] [file ...] • Opzioni: -a: elenca anche i file che iniziano con . -l: output in formato esteso -g: include l'indicazione del gruppo -r: ordine inverso (alfabetico/temporale) -t: elenca i file in ordine temporale -R: elenca anche i file nei sottodirettori Sistemi Operativi - Introduzione 37 ls - un esempio # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 38 ls - un esempio Tipo di file # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 39 ls - un esempio Protezioni # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 40 ls - un esempio N° di link # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 41 ls - un esempio Owner # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 42 ls - un esempio Group # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 43 ls - un esempio Dimensione # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 44 ls - un esempio Data di creazione # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 45 ls - un esempio Nome del file # ls -alg ~/tmp total 84 drwx------ 6 maino drwxr-xr-x 19 maino -rw-r--r-- 1 maino drwxr-x--- 2 maino -rw------- 1 maino -rw------- 1 maino drwxr-xr-x 2 maino -rw-r----- 1 maino -rw------- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino -rw-r----- 1 maino drwx------ 2 maino Sistemi Operativi - Introduzione staff staff staff staff staff staff staff staff staff staff staff staff staff 512 1024 1240 512 2416 332 512 27930 28077 70 1364 62 512 Sep Sep Jan May Jun Jun May Mar Mar Jun May May May 1 6 21 22 30 18 22 12 12 2 6 6 25 16:14 09:06 1992 14:08 15:24 15:29 14:08 23:19 22:52 18:00 14:20 14:21 14:36 . .. AA.readme examples gendata.c local.c man new.tex numer.tex prova.tex random.c random.h testprof 46 Visualizzazione di file testo • Mediante un editor (es. vi o emacs) • cat file1 file2 … – concatena i file in output • head [-n] file … – visualizza le prime n righe • tail [-n] file … – visualizza le ultime n righe Sistemi Operativi - Introduzione 47 Visualizzazione una pagina per volta • pg file ... • more file ... • less file ... Sistemi Operativi - Introduzione 49 Visualizzazione una pagina per volta (cont.) • Comandi durante la visualizzazione: – spazio prossima pagina – return prossima riga –b pagina precedente – /pattern prossima occorrenza di ‘pattern’ – ?pattern occorrenza precedente di ‘pattern’ –q termina la visualizzazione Sistemi Operativi - Introduzione 50 Ricerca di file • find direttorio espressione – visita tutto l'albero sotto il direttorio specificato ed opera sui file che rendono vera l'espressione Esempio: – find ./src -name “*.c” Sistemi Operativi - Introduzione 51 Ricerca di file (cont.) • -name pattern – attenzione: racchiudere il pattern tra apici se si usano espressioni regolari (es ‘A*’) • -type tipo • -exec comando \; – esegue il comando specificato per ogni file trovato – i file trovati si indicano con \{} Esempio: – find . –name “*.old” -type f –exec rm –f \{} \; Sistemi Operativi - Introduzione 52 Confronto di file • diff [-opzioni] file1 file2 – mostra le righe diverse, indicando quelle aggiunte (a), cancellate (d) e cambiate (c) • diff [-opzioni] dir1 dir2 – effettua il confronto tra tutti i file con lo stesso nome nei due direttori Sistemi Operativi - Introduzione 53 Confronto di file • Opzioni: -b: ignora gli spazi a fine riga, collassa gli altri -i: ignora la differenza maiuscolo/minuscolo -w: ignora completamente la spaziatura Sistemi Operativi - Introduzione 54 Occupazione di spazio su disco • df [-k] [disco ...] – per controllare l'occupazione dei dischi – -k: occupazione in KB • du [-aks] direttorio … – per vedere lo spazio occupato da un direttorio e tutti i suoi sottodirettori – -a: occupazione di ciascun file – -s: solo il totale complessivo – -k: occupazione in KB Sistemi Operativi - Introduzione 55 df: esempio $ df Filesys. 1024-bl. Used Av. Cap. Mnt /dev/hda3 199270 182354 6625 96% / /dev/hda1 61060 20967 36939 36% /usr /dev/hda4 199271 147953 41027 78% /home/pc Av. Available, Cap. Capacity, Mnt Mount point Sistemi Operativi - Introduzione 56