Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Il primo indica il dispositivo per il controllo della periferica, hard disk sul
controller a;
mentre il secondo controlla il terminale.
bin la directory che contiene i programmi principali eseguibili.
home la home directory degli utenti.
b
d
i
e
n
h
tv
o
c
m
li
e
p
b
tr
u
m
o
s
p
c
r
j
s
tr
e os
jic
a uos
o
in ruo
s
a cru
Xe ecr
b
3 p ec
e
e
i8 h
e
m
n
6
tg+
ia
+c
x
li
n
incl
lcl
b
b
ude e
o
u ie
m
c
d n
li
t
a
a
m
e
b
c
c
sla
s
li
s
p
n
tro n
m
c
o u
p
l x
Nella figura precedente, la root directory (/) il genitore di tutte le arte directory.
Mentre la directory home, per esempio, il genitore delle sottodirectory jean, tricia e
joseph.
Il file system di UNIX un file system virtuale, il che significa che si pu accedere a
tutte le partizioni una volta che sono state montate nella struttura ad albero.
Impostazione delle partizioni del file system
Il partizionamento dei file system isola e protegge ogni singolo file system, perci se
uno di essi si guasta, si pu lavorare con un altro.
Si dovrebbero usare almeno tre partizioni separate per i file system: root, swap e/ usr.
La dimensione delle partizioni viene misurata in megabyte (MB, ossia un milione di
caratteri).
Le partizioni grandi hanno maggiori probabilit di essere danneggiate rispetto a quelle
di dimensioni minori: la partizione root dovrebbe essere ridotta per evitare la
corruzione dei file. Un file system root danneggiato rende il sistema non avviabile.
Dopo la partizione root, si imposta la partizione swap, che agisce come estensione
della memoria in modo che UNIX abbia pi spazio per lesecuzione di programmi di
grandi dimensioni.
Infine, la partizione /usr contiene tutti i programmi del sistema operativo non relativi al
kernel che rendono utile il computer, tra i quali vi sono i pacchetti per lo sviluppo di
software che permettono di programmare, i programmi di rete, quelli per laccesso a
Internet, le interfacce grafiche e il grande numero di utility UNIX (programmi che
svolgono operazioni utili come la copia di file, lelencazione di directory e la
comunicazione con gli altri utenti). La partizione /usr dovrebbe essere la pi grande
delle tre partizioni.
Oltre a queste tre partizioni separate, si pu creare una partizione /home destinata alla
home directory di tutte le directory degli utenti. Una partizione home separata
protegge e isola i file personali degli utenti dal software del sistema operativo UNIX.
La partizione /usr
La partizione /usr una grande partizione che memorizza la maggior parte dei file e
dei programmi del sistema operativo.
Anche gli strumenti per lo sviluppo di software, come i compilatori, le librerie condivise
e i file di intestazione necessari per la creazione di programmi vengono memorizzati in
una gerarchia di sottodirectory che parte da /usr.
La partizione /home
La partizione /home larea di memorizzazione del lavoro di tutti gli utenti. Se la
partizione /root (o qualunque altra partizione) viene danneggiata, la presenza di una
partizione /home garantisce che le informazioni degli utenti non saranno perse.
Sebbene si possano avere delle limitazioni alla lettura di informazioni presenti in altre
partizioni, si pu accedere alla maggior parte dei file presenti nella propria home
directory.
La dimensione della partizione destinata alla home directory di tutti gli utenti di un
sistema dipende dal numero di utenti che il sistema deve accogliere. Lo spazio allocato
pu dipendere anche da quanti dati ogni utente ha bisogno di memorizzare.
La partizione di swap
Le partizioni swap consentono di avere una memoria virtuale, ossia una risorsa di
memoria aggiuntiva ottenuta utilizzando parte dello spazio del disco come
unestensione della memoria (RAM).
USO DEL COMANDO MOUNT
UNIX utilizza il comando mount per collegare le partizioni del file system alla
struttura delle directory allavvio del sistema.
Per poter utilizzare un filesystem in un sistema UNIX, necessario che questa venga
agganciato al directory tree, ovvero venga visto come una directory allinterno
dellalbero delle directory.
Si parla quindi di montaggio del filesystem.
Questa operazione informa il sistema operativo della presenza del filesystem
considerato, associandolo ad una directory allinterno della struttura logica che
rappresenta il mount-point (punto di montaggio) del filesystem.
La sintassi del comando mount la seguente:
Sintassi
Analisi
Il comando
Per garantire la sicurezza del sistema, solo lutente root, in genere lamministratore di
sistema, pu usare il comando mount. Gli utenti normali possono invece utilizzare
diversi pacchetti software per montare e smontare i file system, in particolare dischetti
e CD-ROM.
Il CD-ROM uno dei dispositivi necessari pi di frequente, pertanto lo si deve montare.
Supponiamo che si desideri accedere ai file di un CD: lamministratore di sistema
monta il CD-ROM inserendo un disco nellunit e immettendo il comando seguente:
umount /mnt/cdrom
CONTROLLO DELLO SPAZIO SI DISCO
Il comando df
Per visualizzare un prospetto della quantit di spazio su disco libero e usato dai singoli
file system del sistema, si utilizza il comando df (disk free).
Lo spazio rappresentato in termini di blocchi del disco (un blocco equivale a 512 MB)
e inode.
La sintassi del comando la seguente:
Sintassi
df [option] [--] [file]
Analisi
Ad esempio:
1. user>
df
(/dev/dsk/ c0t0d0s0 ) :
2231020 blocks
/proc
(/proc
):
blocks
/opt
(/dev/dsk/ c0t0d0s3 ) :
2486076 blocks
/usr/local (/dev/dsk/ c0t0d0s7 ) :
4067088 blocks
/
(apphost : /opt/solaris2) :
opt/salari 1995968 blocks
s2
304297 files
0
11692 files
325130 files
430227 files
286013 files
Nellesempio considerato:
- il primo campo contiene il nome del filesystem
- il secondo il device corrispondente (eventualmente virtuale)
- il terzo il numero di blocchi occupati
- il quarto il numero di inode
Il comando du
Questo comando (disk usage) fornisce informazioni sullo spazio occupato da una
directory e da tutte le sue sottodirectory, misurato in blocchi.
La sua sintassi :
Sintassi
du
Analisi
[opzioni] [arg]
[opzioni] sono ovviamente le opzioni del comando.
Ad esempio a, mostra lo spazio occupato anche dai file che si
incontrano, e non solo dalle eventuali sottodirectory.
Ve ne sono altre utilizzate per cambiare lunit di misura dello
spazio su disco:
Visualizza lo spazio occupato in byte
-b
Visualizza lo spazio occupato in kilobyte
-k
Ad esempio:
1. user>
8
1688
4
16
14
1734
2
-m
du LABORATORIO_SO
LABORATORIO_SO/LABSO/CVS
LABORATORIO_SO/LABSO
LABORATORIO_SO/scriptColonne
LABORATORIO_SO/linguaggio_c
LABORATORIO_SO
Analisi
top
load averages: 0.68, 0.39, 0.27
14 :
34 : 55
245 processes: 235 sleeping, 9 zombie, 1 on cpu
CPU states: 91.9% idle, 5.8% user, 2.4% kernel, 0.0%
iodai, 0.0% swap
Memory: 768M real, 17M free, 937M swap in use, 759M swap
free
PID USERN
AME
128 root
87
421 lenisa
0
924 root
1
243 pietro
TH P NI SIZE
R RI CE
1 5
0 65M
9
1 4
0 285
8
6K
1 5
0 35M
9
4 4
0 28M
RES STA
TE
56M slee
p
231 cpu
2K
S6M slee
p
25M slee
89
4%
Nellesempio precedente:
- la prima riga indica il carico del sistema rispettivamente nellultimo minuto,
negli ultimo 5 minuti, negli ultimi 15 minuti. Il carico espresso come numero di
processori necessari per far girare tutti i processi a velocit massima. Alla fine
della riga c lora.
- La seconda contiene il numero e lo stato dei processi del sistema.
- La terza. Lutilizzo della CPU.
- La quarta contiene informazioni sulla memoria.
- Le restanti righe contengono informazioni sui processi (THR=thred,
RES=resident)
PERCORSI
Abbiamo visto che tutti i file UNIX sono memorizzati in directory dei file system, a
partire dalla root directory. Per specificare un file o una directory, si utilizza il suo
nome di percorso (pathname), che segue i rami del file system e del file desiderato.
Una barra trasversale (/) separa i nomi delle directory.
Quindi tutti i file possono essere individuati con un percorso corretto ed unico, ossia un
elenco dei nomi delle directory che portano ad un file particolare.
Un percorso assoluto inizia sempre a livello della root directory, mentre un percorso
relativo parte dalla directory corrente.
Ad esempio, se si desidera specificare la posizione del file phones.502, sapendo
che si trova nella directory source della home directory di jean, allora si
scriver /home/jean/source/phones.502.
Mentre, supponendo di trovarci nella directory / home/jean, il pathname sar
source/phones.502.
Uso del prompt della linea di comando
Il prompt dei comandi di UNIX pu indicare la posizione corrente nel file system.
Per esempio, il prompt [jean@eli jean]$ probabilmente il prompt predefinito
generato dallamministratore di sistema al momento della creazione dellaccount. Il
prompt [jean@eli jean]$ significa che jean lutente che sta lavorando sul
computer host chiamato eli nella sua home directory, che porta il suo nome utente
jean. In altre parole, jean su eli nella sua home directory.
Quando Jean cambia posizione per passare a home/jean/source, il suo prompt sar il
seguente
[jean@eli source]$
Personalizzazione del prompt
Il prompt viene configurato automaticamente allaccesso.
Una variabile di ambiente, PS1, contiene dei caratteri speciali di formattazione che
determinano la formattazione del prompt.
Per visualizzare il contenuto della variabile di ambiente PS1:
1. Si digita echo $PS1 e s preme Invio
2. Apparir il contenuto della variabile PS1, che potrebbe essere simile al
seguente:
[ \u@\h \W] \$
I caratteri che iniziano con \ sono caratteri speciali di formattazione della shell Bash:
\u visualizza il nome dellutente, \h visualizza il nome dellhost del sistema, mentre
\W visualizza il nome della directory di lavoro. Il carattere \$ visualizza un # o un $,
in relazione al tipo di utente connesso.
Le parentesi quadre, [ e ], e lo spazio che separa \h e \W non sono caratteri speciali,
quindi vengono visualizzati cos come appaiono.
Quando Jean connessa al sistema eli e lavora nella sua home directory, il suo prompt
sar [jean@eli jean]$ secondo il formato mostrato sopra.
Altri caratteri di formattazione per la configurazione del prompt della shell Bash sono:
Caratteri di
Scopo
formattazione
\d
Visualizza la data
\h
Visualizza il nome dellhost
\n
Visualizza una nuova riga
\nnn
Visualizza il carattere ASCII che corrisponde al numero ottale
nnn
\s
Visualizza il nome della shell
\t
Visualizza lora
\u
Visualizza il nome dellutente
\w
Visualizza il percorso della directory di lavoro
\W
Visualizza il nome della directory di lavoro senza informazioni
di percorso
\!
Visualizza il numero del comando corrente nella cronologia
dei comandi
\#
Visualizza il numero del comando nella sessione corrente
\$
Visualizza il simbolo # selutente root, altrimenti visualizza
un simbolo $
\[
Contrassegna linizio di una sequenza di caratteri non
stampabili, come una sequenza di controllo
\]
Contrassegna la fine di una sequenza di caratteri non
stampabili
\\
Visualizza il carattere \
Configurazione del prompt della shell Bash:
1. Per modificare il prompt in modo che visualizzi la data e lora, digitare PS1
\d\t> e premere Invio. Digitare il comando senza spazi tra i caratteri.
Il prompt a questo punto assomiglier al seguente:
>
Il carattere di formattazione \w visualizza il segno
per
rappresentare la home directory dellutente.
Per cambiare il prompt in modo che visualizzi il percorso completo della
directory di lavoro, si deve usare unaltra variabile di ambiente, PWD, che
contiene il nome di percorso completo della directory di lavoro corrente.
3. Per visualizzare la variabile PWD nel prompt, digitare PS1 = $PWD> e
premere Invio (osserviamo che si deve anteporre il segno $ alla variabile di
/home/jean>
4. Disconnettersi dal sistema ed accedere nuovamente per reimpostare il prompt
alla suo configurazione predefinita.
Il comando pwd
Si pu usare il comando UNIX pwd per visualizzare il percorso corrente, infatti pwd
labbreviazione di present working directory, ossia stampa la directory di lavoro.
Visualizzazione del percorso corrente:
1. Al prompt dei comandi $ digitare pwd e premere Invio.
Il sistema visualizza il percorso della directory di lavoro corrente.
SPOSTAMENTO NEL FILE SYSTEM
Per spostarsi nella struttura delle directory di UNIX, si utilizza il comando
directory), che ha la seguente sintassi:
cd (change
Sintassi
cd directory
Analisi
Quando si accede al sistema, si lavora nella propria home directory, che si trova sotto
la directory /home.
Quando si cambia directory e si desidera poi tornare nella home directory, si deve
digitare cd e premere Invio (quindi cd senza argomenti sposta lutente nella sua
home directory).
UNIX utilizza anche il carattere tilde
per indicare la home directory
dellutente.
Si utilizza inoltre il comando cd . . per spostarsi nella directory madre,
mentre il comando cd . indica la directory corrente.
Illustriamo un esempio che mostra lutilizzo di
pwd e cd:
pwd
/home/bianchi
cd . /progetto
pwd
/home/bianchi/progetto
Notiamo che punto (.) e punto punto (. .) sono alias rispettivamente per la
directory corrente e per la directory madre.
Elencazione del contenuto delle directory
Il comando ls (list)visualizza i nomi dei file e delle directory contenuti in una directory.
I file contenuti appaiono con colori diversificati a seconda che siano directory, file
normali o file compressi.
possibile fornire un argomento a ls, in modo da elencare un file specifico o
visualizzare il contenuto di una particolare directory.
drwxr -xr -x
*
?
[]
{}
[a-z]
[!a]
Significato
Stringa di 0 o pi caratteri
Singolo carattere
Singolo carattere tra quelli elencati
Stringa tra quelle elencate
Indica qualsiasi carattere compreso tra a e z inclusi
Indica qualsiasi carattere diverso da a
friends
instructions.txt
list1
list2
list2b
memo_to_fred
memo_to_jill
minutes.txt
notes
2. Se si immette il comando
output:
instructions.txt minutes.txt
Largomento *.txt provoca la visualizzazione dei nomi di tutti i file che
terminano con .txt .
3. Se invece si immette
friends notes
1. user cp /JAVA/Area*. java /JAVA_backup
Copia dalla directory JAVA tutti i files il cui nome inizia con la stringa Area e
termina con lestensione .java, nella directory JAVA_Backup
Il metacarattere
list1 list2
osserviamo che non verrebbe elencato il file list2b, perch i caratteri che
seguono la parola list nel suo nome sono due.
1.
user> ls /dev/tty?
Mi fa vedere tutti i device tty+un solo carattere
2.
user> ls /dev/tty?[234]
Restituisce la lista dei file in /dev
user> ls /dev/tty?[2-4]
In questo caso il risultato analogo al punto precedente:
4.
Il quoting
Il meccanismo del quoting utilizzato per inibire leffetto dei metacaratteri.
I metacaratteri cui applicato il quoting perdono il loro significato speciale e la shell li
tratta come caratteri ordinari.
Ci sono tre meccanismi di quoting:
- il metacarattere escape (\) inibisce leffetto speciale del metacarattere che lo
segue.
Ad esempio:
user> cp file file\?
user> ls file*
file file?
In questo caso non interpreta ? come metacarattere, ma crea il file file?.
-
Tutti i metacaratteri presenti in una stringa racchiusa tra singoli apici perdono
leffetto speciale.
Ad esempio:
user> cat file*?
in questo caso * e ? no hanno pi il valore di metacaratteri, ma fanno parte del nome
del file.
6. Premere Ctrl + Z
7. Digitare cd e premere Invio per tornare nella home directory.
Per rimuovere un file si utilizza il comando rm, mentre per eliminare una directory
vuota si usa il comando rmdir.
(Una directory deve essere vuota affinch sia possibile rimuoverla.)
IMPOSTAZONE DELLE AUTORIZZAZIONI PER I FILE
Linux un sistema operativo multiutente; per ogni file ci sono quattro categorie di
utenti:
root, owner, group, world.
Lamministratore del sistema (root) ha tutti i permessi su tutti i file (pu leggere,
scrivere ed eseguire ogni file). Per le altre categorie di utenti, invece, laccesso ai file
regolato dai permessi.
Nellanalizzare il risultato del comando ls abbiamo visto che nella prima colonna
compaiono il tipo di file e le autorizzazioni per laccesso.
Tale colonna era, per esempio, drwxr -xr -x, dove il primo carattere indica il tipo di
file mentre i caratteri che seguono sono suddivisi in tre sezioni di specificatori di
autorizzazioni, ognuna delle quali contiene tre specificatori, come mostrato in figura
Tipo Autorizz
al
dir wxazioni
d
r - xr - x
gruppo
file
Autorizzaz
ioni al
proprietari
o
Autoriz
zazioni
agli
altri
ls -l /etc/passwd
-rw-rr-root
root
1. Ad esempio: ugo+rwx
Nella stringa i caratteri ugo indicano lo user (equivalente a proprietario), group
o others, ossia proprietario, gruppo o altri. Queste categorie di utenti saranno
interessate dal comando chmod.
Il carattere successivo, il segno +, indica che le autorizzazioni sono concesse.
Mentre lultimo gruppo di caratteri, in questo caso rwx, indica le autorizzazioni
assegnate.
La stringa simbolica suddetta indica pertanto che vengono assegnate
autorizzazioni di lettura, scrittura ed esecuzione al proprietario, al gruppo e agli
altri utenti.
2. Supponiamo ora di usare la stringa simbolica in un comando per modificare le
autorizzazioni di accesso a miofile:
chmod 744 f1
Infatti, in ottale 744 corrisponde a 111100100, ossia rwxr--r--.
6. Possiamo scegliere un modo ancora diverso per assegnare i permessi. Per
esempio, per ottenere il risultato precedente potremmo scrivere
Quindi inode un puntatore ad unarea del disco libera oppure occupata da un file.
Ad ogni file corrisponde un numero di inode, tale numero non altro che lindice
dellinode nellarray.
Tale struttura contiene:
- La locazione dei contenuti degli oggetti su disco;
- Il tipo di oggetto (-d, -l, );
- La taglia in byte delloggetto;
- Lora dellultima volta in cui linode del file stato modificato (ctime);
- Lora dellultima volta in cui il contenuto del file stato modificato (mtime);
- Lora dellultima volta in cui il file stato utilizzato, letto o eseguito (atime);
- Il possessore del file;
- Il gruppo del file;
- I permessi riguardanti il file.
Quindi linode contiene tutte le informazioni riferite ad un file di qualunque tipo
(comprese le directory), escluso il nome del file. In particolare, linode contiene i
riferimenti necessari per raggiungere i blocchi di dati del file ed ogni inode
raggiungibile tramite un numero (indice).
Un blocco di dati una zona del disco utilizzata per contenere dati, il contenuto di un
file pu essere distribuito in pi blocchi da dati.
La directory un file (cio un inode come gli altri) contenente un elenco di nomi di file
abbinati al numero di inode rispettivo.
Quindi le directory sono tabelle che associano i nomi dei file ai rispettivi numeri di
inode.
Le voci contenute in una directory sono dei collegamenti, indicati come collegamenti
fisici o hard link, a degli inode. Quindi nella directory vi sono diverse voci, ognuna delle
quali contiene il nome del file e il riferimento allinode corrispondente (collegamento
fisico).
Quando un programma chiama un file tramite il nome, il sistema operativo trova
linode corrispondente grazie alle directory, e linode punta ai blocchi di memoria in cui
sono memorizzate le informazioni riguardanti il file.
Rappresentiamo, in maniera stilizzata, un esempio di struttura del filesystem:
dir
ect f
f1
oryf2
2
A _n
dir
ecteg
w1
oryg1
B _n
ew
array
degli
4
inode
4
3
4
3
4
8
4
9
4
0
4
1
4
2
3
Quando due file puntano allo stesso indice, vuol dire che sono la stessa cosa.
Perci uno di essi sar un link, anche se non sappiamo dire a priori quale dei
due.
I file, nella memoria di massa, sono scritti, se possibile, in modo contiguo; altrimenti si
dispongono in blocchi separati.
ln.
Con il comando
ln f1 f1_new
otteniamo leffetto analizzato sopra, il file f2_new un link avente lo stesso inode di
f2.
Soft link
Possiamo creare anche dei collegamenti cosiddetti simbolici, in questo caso i file creati
non fanno riferimento allo spazio in memoria, ma al file di partenza.
Con il soft link del file g2, creo un file, g2_new, che ha un pathname analogo a quello
di g2; in questo modo non ottengo un collegamento fisico, ma solo un puntatore al file
g2 e cancellando questultimo file g2_new rimarr appeso.
Il comando utilizzato per creare questo tipo di collegamento ln s.
Con il comando:
ls s g2 g2_new
otteniamo leffetto analizzato sopra, il file g2_new un link avente lo stesso pathname
di g2.
COPIA DI FILE
Si utilizza il comando cp per copiare un file di origine in un file di destinazione.
UNIX sovrascrive il file di destinazione senza avvisare, a meno che si utilizzi lopzione
i.
La notazione punto unabbreviazione per indicare la directory corrente come
destinazione di un comando cp.
Alcune opzioni per tale comando sono:
Forza la sovrascrittura dei file, senza chiedere interventi da parte
-f
dellutente
attiva la modalit interattiva, che chiede conferma prima dell'eventuale
-i
sovrascrittura di file preesistenti
mantiene, se possibile, gli attributi del file
-p
-r, -R permette di attivare la modalit ricorsiva, consentendo la copia di directory
Il comando mv
mv miofile /prova
Sposter il file miofile nella directory prova, sovrascrivendo un eventuale
file con lo stesso nome.
3.
mv /prova /prova_nuova
Cambier il nome della directory
prova in prova_nuova
Cp f1 f2 f3 d1
Copia i file f1, f2, f3 nella directory d1.