Cristina Baroglio - Unix 1
Unix
< Master in Bioinformatica-2003>
Cristina Baroglio baroglio @di.unito.it
http://www.di.unito.it/~baroglio/bioinfo/aa0203/index.html
Per chi fosse interessato …
U NIX, Guida co mpleta
K. Rosen, D. Host, J. Farber, R. Rosinski 1999, McGraw-Hill
Cristina Baroglio - Unix 3
Unix è un Sistema Operativo
cos’è un sistema operativo?
00101011001010 10001101011000 00001000100001 11010001110010 Un sistema operativo è un software il cui
scopo è:
1. nascondere le complicazioni della m acchina agli utenti
2. gestire le risorse in modo ottimale Un sistema operativo è un softwareil cui
scopo è:
1. nascondere le complicazioni della m acchina agli utenti
2. gestire le risorse in modo ottimale
Nascondere le complicazioni …
cosa vuol dire?
Questo è un computer aperto
I bit sono differenze di potenziale elettrico C P U
RA M
DISC O
BUS DEVICE
Il sistema operativo lavora a un livello più alto, gestisce utenti, me moria, file system, processi Il sistema operativo lavora a un livello più alto, gestisce utenti, me moria, file system, processi
Cristina Baroglio - Unix 5
Nascondere le complicazioni (2)
esempi
C P U (central processing unit)
File System (struttura organizzativa dei file)
Processi (program mi in esecuzione)
Solitam. Unica
I path mi permettono di raggiungere ogni
file/cartella
I processi devono poter comunicare per
collaborare
M olti utenti lavorano contemporanea mente su di una macchina
Non voglio che altri leggano o modifichino i miei documenti
Voglio poter imporre protocolli di interazione
Gestire le risorse
cos’è una risorsa?
Ese mpio :: la CPU è una risorsa
#include <stdio.h>
m ain(int argc, char **argv) {
int i;
for (i=0; i<strlen(argv[1]; i++) printf(“\n ciao %s!!\n”, argv[1]);
}
Questo è un program ma
È una sequenza di istruzioni scritte in un linguaggio d’alto livello (ling.
C)
Per essere eseguito viene compilato, ovvero tradotto in un linguaggio a più basso livello, le cui istruzioni possono essere eseguite dalla macchina
Cristina Baroglio - Unix 7
Gestione delle risorse (2)
editor
Interfaccia grafica
Finestra comandi
Mio program ma
È un processo È un processo
È un processo È un insieme di
processi
Se mbrano eseguiti in parallelo ma com’è possibile se la CPU è unica?
Gestione delle risorse (3)
Il Sistema Operativo mantiene un descrittore per ogni processo (process control block)
Ogni processo è in uno stato (in esecuzione, in attesa, pronto, …)
Un solo processo per volta può essere “in esecuzione”: il processo che usa la risorsa CPU
Tutti gli altri sono sospesi
Il sistema operativo implementa una politica di schedulingche per distribuire l’uso della risorsa CPU fra i vari processi pronti (ready)
Cristina Baroglio - Unix 9
Esempio: round robin
Coda dei processi “ready”
C P U
Un processo può occupare la C P U per un quanto di tempo, allo scadere viene posto in fondo alla coda dei processi ready mentre la C P U passa al primo processo ready in coda
Sistema Operativo Unix
1. M ultiutente 2. M ulti-task
3. File system gerarchico 4. Scritto in C (portabilità) 5. Stratificato
6. Gestisce in modo omogeneo device e directory/file
7. Sistema di protezione di file e directory
Cristina Baroglio - Unix 11
Shell
> Co mando argomenti [ opzioni ] Output del comando
> nuovo_co mando
Prompt
Indica che il sistema è in attesa di un comando
Tipicamente l’interazione avviene in forma testuale: l’utente digita un comando, il sistema lo esegue, visualizzando eventuali output, poi si mette in attesa di un nuovo comando
L’ambiente di lavoro dell’utente è detto shell. La shell manda in esecuzione i comandi dell’utente e fa da tramite fra questi e il kernel del sistema operativo
Esempi di comandi
>> date
Tue Feb 26 13:27:13 MET 2002
>>
>> ls tmp
prova1* prova1.c docum entazione/
>>
>> gcc –o prova1 prova1.c
>>
Co mando senza argomenti né opzioni
Co mando con un argomento
Co mando con un argomento e un’opzione
Cristina Baroglio - Unix 13
Gestione degli utenti
Gestione degli utenti
Ad una stessa macchina possono essere collegati più utenti contemporanea mente
Ciascun utente deve lavorare co me se fosse l’unico ad utilizzare la macchina
Un utente deve poter condividere file e cartelle con altri Deve poter proteggere i propri file e cartelle dagli altri Ad una stessa macchina possono essere collegati più utenti contemporanea mente
Ciascun utente deve lavorare co me se fosse l’unicoad utilizzare la macchina
Un utente deve poter condividerefile e cartelle con altri Deve poter proteggerei propri file e cartelle dagli altri
Cristina Baroglio - Unix 15
Utenti e ambiente di lavoro
Quando un utente inizia a lavorare su una macchina Unix il sistema operativo gli crea un ambiente di lavoro
• l’ambiente è definito dal valore di un certo numero di variabili di ambiente(HOM E, PATH, P W D, TER M, …)
• accesso a una parte del file system
• avvio di un’interfacciadi lavoro
Co me sono identificati gli utenti?
identificazione
Login:: identificatore pubblico usato anche, per esempio, per identificare il destinatario di posta elettronica
Password:: privata, usata dal sistema operativo per accertare l’identità del presunto utente (mantenute in /etc/passwd)
UID:: User Identifier, numero intero usato internamente al sistema come identificatore dell’utente
Cristina Baroglio - Unix 17
Gruppi di utenti
Un gruppo identifica un insie me di utenti che cooperano
In certe versioni di Unix (non tutte) un utente può appartenere a più gruppi
Ogni gruppo ha un identificatore detto GID (Group Identifier)
Un gruppo identifica un insie me di utenti che cooperano
In certe versioni di Unix (non tutte) un utente può appartenere a più gruppi
Ogni gruppo ha un identificatore detto GID(Group Identifier)
File System
Cristina Baroglio - Unix 19
File system
L’utente vede la me moria organizzata in file
Un file è una sequenza di byte, ha un nome, un contenuto, un proprietario, e vari attributi come ad esempio i diritti d’accesso
I file sono organizzati in una struttura gerarchica: unalbero
directory file
frontiera
Alberi = scatole cinesi
Cristina Baroglio - Unix 21
File system e utenti
luca elena topolino
Una parte del file system appartiene a “superuser” (o
“root”) il resto appartiene ai singoli utenti; ogni utente è proprietario di un sottoalbero Una parte del file system appartiene a “superuser” (o
“root”) il resto appartiene ai singoli utenti; ogni utenteè proprietario di un sottoalbero
Path assoluti …
testo.txt
testo.txt root
dir1
dir2
dir3
Nodi diversinell’albero possono avere lo stesso no me
Ogni nodo è univocamente
individuatodal cam mino che congiunge la radice (root) al nodo medesimo (path assoluto)
root/dir1/dir2/testo.txt /dir1/dir2/testo.txt
Cristina Baroglio - Unix 23
… Path relativi…
.
root
dir1
dir2
dir3
Ogni directoryha due sottodirectory speciali
“.” che punta alla directory m edesima
“..” che punta alla directory padre ..
… Path relativi
testo.txt
testo.txt root
dir1
dir2
dir3
Tramite “..” posso costruire cam mini relativi, che partono da una directory qualsiasi e raggiungono un file (directory) qualsiasi
Se per esempio parto da
“dir3” raggiungo i due file
“testo.txt”rispettivamente con:
testo.txt
Cristina Baroglio - Unix 25
Diritti di accesso ai file …
Ogni file ha un proprietario: utente che lo ha creato
Il proprietario di un file appartiene a un gruppo
Per ogni file avremo tre specifichedi diritti di accesso:
1. Per il proprietario
2. Per gli utenti ∈ al gruppo del proprietario 3. Per gli utenti che non rientrano nei punti 1 e 2
… diritti di accesso ai file
r = diritto di lettura w = diritto di modifica x = diritto di esecuzione
r w - r - - - documento1.txt
Diritti del proprietario
Diritti del gruppo del proprietario
Diritti di tutti gli altri
User Group Others
Cristina Baroglio - Unix 27
chmod
Consente i modificare i diritti di accesso
u= modifica i diritti di accesso del proprietario
g= modifica i diritti di accesso del gruppo del proprietario o= modifica i diritti di accesso di tutti gli altri utenti a= tutti gli utenti
+= per abilitare dei diritti -= per disabilitare dei diritti
>> chmod a+x prova1
r w - r -- --- prova1
r wx r -x --x prova1
Diritti di accesso alle directory
r = diritto di lettura
w = diritto di creaz/cancellaz file x = diritto di attraversamento
r w - r - - - mia_directory
Diritti del proprietario
Diritti del gruppo del proprietario
Diritti di tutti gli altri
User Group Others
Inibire il diritto di attraversam ento di una directory ad un utente significa che l’utente non potrà usare quel nome in un path per accedere all’eventuale
sottoalbero
Cristina Baroglio - Unix 29
Working directory …
In ogni istante ciascun utente è “posizionato” in un qualche punto del file system, la posizione nel file system è detta working directory(directory di lavoro) Tutte le volte che eseguo un comando che utilizza un file
devo specificare il cam mino per raggiungere quel file?
N O!!
>> cp file1 file2
file1è contenuto nella wd file2viene creato in wd
>> cp file1 ../tmp/file2
file1è contenuto nella wd file2viene creato in ../tmp
… working Directory
• La Working Directory è mantenuta in una variabile di ambientechiamata P W D dal sistema operativo
• All’atto del login P W D assu me come valore la ho me directorydell’utente
•Il valore diP W D è modificato dal comando cd
Cristina Baroglio - Unix 31
Shell
Una shellè un interprete di comandi
tutti i comandi digitati da un utente vengono analizzati ed eseguiti da una shell
Ciclo della shell
Loop forever { wait_com mand;
parse_com mand;
execute_com mand;
}
n.b.i program mi creati dagli utenti sono trattati alla stregua dei comandi di sistema
Una shell consente anche:
1. di mantenere ed usare un elenco di comandi eseguiti (history)
2. di completare i nomi in m odo automatico
Struttura dei comandi
No me_co mando [opzioni] [argo menti]
Unix è case-sensitive: maiuscole ≠ minuscole
Gli spazi fungono da separatori: i nomi non devono contenere spazi
In molti linguaggi gli accentihanno un significato a sé stante:
m ai usare lettere accentate
Alcuni comandi hanno argom enti espliciti altri lavorano su variabili di a mbiente (argomenti impliciti)
Cristina Baroglio - Unix 33
Alcuni comandi su directory
1. mkdir nome_dir :: crea una nuova directory
2. rmdir nome_dir :: cancella la directory nome_dir(se è vuota) 3. rm –r nome_dir :: cancella una directory e il suo contenuto 4. mv dir1 dir2 :: cambia no me alla directory dir1
5. mv file1 … fileN dir:: sposta i file indicati inserendoli in dir 6. cd path :: cambia la w.d. seguendo il cam mino path 7. ls :: elenca il contenuto della wd
8. ls path :: elenca il contenuto della directory path
9. pwd :: mostra la w.d.
Alcune opzioni di ls
1. -l :: mostra tutte le info associate ai file (dimensione, diritti d’accesso, …) 2. -t :: elenca i file in ordine di modifica (prima quelli modificati più di recente) 3. -a :: elenca anche i file nascosti (il cui nome inizia per “.”)
Alcuni comandi su file
1. rm nome_file :: cancella il file nome_file
2. rm –i nome_file :: cancella il file chiedendo conferma 3. mv file1 file2 :: cambia no me al file file1
4. file file1 :: restituisce il tipo di contenuto del file
5. vi file1 :: editor, qui usato per creare file1 o modificarne il contenuto
Cristina Baroglio - Unix 35
Alcuni comandi sugli utenti
1. finger login :: restituisce info sul proprietario del login
2. who :: restituisce l’elenco degli utenti attualmente connessi a una macchina
3. whoa mi :: restituisce il login dell’utente dalla cui shell è stato lanciato il comando
Non solo file e directory
testo.txt
testo.txt root
dir1
dir2
dir3
link
ln –s ../dir1/dir2/testo.txt [nuovo_no me]
Cristina Baroglio - Unix 37
Processi
Processi
L’esecuzione di un comando o in genere di un program ma dà origine a un processo
Standard input
Standard output Standard error
Cristina Baroglio - Unix 39
Ridirezione dei flussi
I flussi standard possono essere ridiretti: l’input può essere diverso dalla tastiera e output e error possono essere diversi dal monitor (es. file)
Ese mpi:
ls –a >file_risultato
mio_progra m m a > /dev/null
Pipe
I comandi possono essere “concatenati” attraverso la ridirezione di standard input e output dimodoché l’output
prodotto dal primo divenga l’input del secondo
C m d1| C md2
Ese mpio: fgrep “aabbcc” file_dati | wc