Questo documento riporta i principali argomenti del corso Unix base ed e' utile quale introduzione al sistema Unix.
Buona lettura!
La
funzione principale di un sistema operativo e` quella di permettere l'interazione
tra l'hardware (dischi, periferiche, ....) e l'utente.
Tale
connessione viene gestita da un programma detto KERNEL.
Il
kernel :
·
garantisce i servizi
necessari alle applicazioni per la loro esecuzione (gestione I/O, comunicazione
tra processi, ....) sotto forma di system call;
Al
di sopra del kernel si trovano delle applicazioni scritte in linguaggio 'C'
estremamente portabili che sono utilizzate dall'utente e viste come sistema
operativo.
Il
kernel si divide logicamente in due parti :
·
KERNEL DI BASE
·
DEVICE DRIVERS
Il controllo effettivo delle periferiche
viene effettuato dai device drivers. Il
kernel di base risponde alle richieste di utilizzo della periferica chiamando
il device driver relativo, gli passa il controllo e, alla fine, riceve l'esito
dell'operazione. Il
kernel puo' essere configurato in base alla struttura hardware aggiungendo o
rimuovendo device drivers dal kernel. In
questo modo esso risulta essere "modellabile" in base alle possibilita`
hardware del sistema. Nei
sistemi UNIX in genere e` necessario riconfigurare il kernel ogni volta che
vengono aggiunti o cancellati dei device drivers. Unix
e' un sistema operativo multiuser
e multiprocess. ·
MULTIUSER -
gestione contemporanea di piu` utenti ·
MULTIPROCESS - gestione
contemporanea in memoria di piu` processi L'uso
della CPU viene gestito secondo un meccanismo di time
sharing, ovvero di condivisione della stessa per un breve periodo di tempo
(time slice) tra i vari processi. ·
PROCESSO 1. area utente : codice,
dati e stack del processo 2. area
di sistema : informazioni che il sistema operativo mantiene sul processo (memoria
utilizzata, utente proprietario, tempo di CPU utilizzato, ....) ·IMMAGINE E`
l'insieme delle due aree di memoria in cui e' diviso logicamente il processo
piu` la entry nella tabella dei processi ·TABELLA DEI PROCESSI ·RUNNING ·READY ·SLEEPING I
processi in stato ready vengono inseriti in una tabella ordinati in modo decrescente
in base alla propria priorita` di
esecuzione. Tale
tabella e` detta RUN QUEUE. ·E`
una porzione contigua di disco suddivisa su piu` cilindri. ·Permette
la memorizzazione dei files. ·Puo`
essere dedicata come area di swap. ·Organizzazione
gerarchica ·Obbligatorio
per la memorizzazione dei file ·Informazioni
di sistema : ·S5
·
Effettua un collegamento
tra file systems ·
E` indipendente dal
tipo del file system ·
Si ha la sensazione
di avere un unico file system che parte dalla directory '/' (root) ·
Viene eseguito
al momento del boot del sistema ·
ORDINARI
·
DIRECTORY (d)
·
SPECIALI
·
FIFO
·
LINK (l) ·
Gestiscono la comunicazione
tra l'utente ed il kernel ·
Eseguono operazioni
specifiche ·
Utilizzano le system
call ·
Vengono anche detti
"shell" ·
Interfacce tra l'utente
ed il kernel ·
Possibilita` di personalizzazione
dell'ambiente di lavoro ·
Caratterizzati da un
ciclo : ·
Possibilita` di programmazione
(script shell) Un
utente Unix e` caratterizzato da : ·
UID ·
GID
·
HOME DIRECTORY Tipi
di utenti : ·
UTENTE NORMALE
·
UTENTE 'root' ·
LOGIN ·
login name ·
password ·
esistenza
dell'utente ·
correttezza
della password
·
LOGOUT ·
ls # ls src bin myshell myfile.c mylink # ls -F src/ bin/ myshell* myfile.c mylink@ ·
pwd pwd # pwd /usr/users/micky ·
mkdir # ls -F bin/ mysrc.c # mkdir src # ls -F bin/ src/ mysrc.c ·
rmdir # ls -F bin/ src/ mysrc.c # rmdir src # ls -F bin/ mysrc.c ·
cd cd [ directory ] # pwd /usr/users/micky # cd src # pwd /usr/users/micky/src touch Permette
di creare un file vouto. Uso
:
touch [ -amc ] [ mmddhhmm[yy] ] files Es
:
# ls -F bin/ src/ mysrc.c
# touch mytouch
# ls -F
bin/
src/
mysrc.c
mytouch cat # cat mysrc.c main() { printf("Mi vedi ?"); } ·
wc wc [-lwc] [files...] -l visualizza a video solo il numero
di linee -w visualizza a video solo il numero
di parole -c visualizza a video solo il numero
di caratteri # wc mysrc.c 4 6 30 ·
cp cp [ -i ] [ -p ] [ -r ] file1 [ file2
...] target -r copia ricorsivamente tutto
l'albero a partire dalla directory corrente -i chiede conferma prima di copiare
un file che gia' esiste # cp myproc.c src ·
mv mv [ -f ] [ -i ] file1 [ file2 ...] target -f non chiede conferma se un file
gia' esiste -i chiede conferma prima di spostare
un file che gia' esiste # mv mysrc.c myproc.c ·
rm rm [-f] [-i] file ... rm -r [-f] [-i] dirname ... [file ...] -r cancella ricorsivamente
a partire dalla directory corrente -i chiede conferma
della cancellazione -f cancella senza chiedere
conferma # rm myproc.c myproc.o ·
chown chown [-R] [-h] owner file ... -R cambia il proprietario a tutti
i file dell'albero a partire dalla directory corrente. # ls -l drwxr-xr-x 1 micky
users 30 Jan 4
14:30 bin drwxr-xr-x 1
micky users 30 Jan
4 15:30 src -rw-rw-r-- 1 micky
users 30 Jan 4
15:35 myproc.c # chown laura myproc.c # ls -l drwxr-xr-x 1 micky
users 30 Jan 4
14:30 bin drwxr-xr-x 1 micky users 30 Jan
4 14:35 src -rw-rw-r-- 1 laura users 30 Jan 4
15:35 myproc.c ·
chgrp chgrp [-R] [-h] group file ... -R cambia il gruppo a tutti i file
dell'albero a partire dalla directory corrente. # ls -l drwxr-xr-x 1 micky
users 30 Jan 4
14:30 bin drwxr-xr-x 1 micky
users 30 Jan 4
14:35 src -rw-rw-r-- 1 micky
users 30 Jan 4
15:35 myproc.c # chgrp other myproc.c # ls -l drwxr-xr-x 1 micky
users 30 Jan 4
14:30 bin drwxr-xr-x 1 micky
users 30 Jan 4
14:35 src -rw-rw-r-- 1 laura other 30 Jan 4
15:35 myproc.c ·
find find <path> [ espressioni ] -name <file name> nome
del file da ricercare. Sono ammessi i metacaratteri -print visualizza
a video il risultato dell'operazione -exec <comando> esegue il comando specificato per ogni
file trovato # find . -name myproc.c -print ·
who
who [-uTlHqpdbrtas] [ file ]
who -qn x [ file ]
who am i # who root console Jan 4
16: 39 ·
id # id micky(250), users(10) ·
sort -m effettua solo
il merge, i file in input devono essere gia` ordinati -u elimina le parole
uguali eccetto una -o<output> file in cui memorizzare
l'output -i ignora i caratteri
non visualizzabili -r inverte l'ordine # cat caos #
sort caos lunedi`
domenica martedi`
giovedi` mercoledi` lunedi` giovedi`
martedi` venerdi`
mercoledi` sabato
sabato domenica venerdi` ·
man man <comando> # man ls ·
apropos # apropos mount mnttab (4) - mounted file system
table mount (1M) - mount file systems
and remote resources umount (1M) - unmount file systems
and remote resources . . . ·
PIPE # ls | sort aaa.c b.c b.o ·
FILTRI Comando grep Serve per selezionare dai dati ricevuti in input solamente quelli che contengono
la stringa specificata come parametro. Uso : grep [options] espression [file ...] Opzioni principali : -c stampa solo il numero di linee
in cui e' stata ritrovata la stringa -i ricerca la stringa sia in
maiuscolo che in minuscolo -l visualizza solo il nome del
file in cui e` stata trovata la stringa -n visualizza il numero di linea
in cui e` stata ritrovata la stringa -r controlla ricorsivamente il contenuto delle directories -v seleziona tutto eccetto la
stringa specificata Es : # ls | grep '.c' aaa.c b.c Comando awk awk [ -Fc ] [ prog ] [ parameters
] [ files ] -F Specifica il carattere
separatore dei campi all'inerno della linea. I caratteri di default
sono lo spazio, il tab ed il new-line. $0 Linea intera $1....$n Primo ..... ultimo
campo all'interno della linea NF Numero di campi
all'inerno della linea NR Numero della
linea RS Separatore di
linea FS Separatore di
campo OFS Separatore dei
campi in output FILENAME Nome del file in input BEGIN Identifica l'azione
da svolgere all'inizio del file END Identifica l'azione
da svolgere alla fine del file Operatori : +, -, *, /, % ++, --, +=, -=, *=, /=, %= <, <=, ==, !=, >=, > Es : NF > 5 $1 != "s" Costrutti : if (condizione) azione [else azione] while (condizione) azione for (espressione ; condizione ; espressione ) azione break continue { [ azione ] ... } variabile = espressione print [ lista di valori .....] printf formato [ lista di varibili , ....] formato = "%[dslix....]" exit Parametri : Sono
passati nella forma di x=....., y=..... e sono riconosciuti all'interno del
comando Es : awk ' BEGIN { FS=":" } { printf
"%d - %s", NR, $1 } ' /etc/passwd Numera e visualizza tutti i nomi utenti contenuti
nel file /etc/passwd. ·
METACARATTERI * una serie di caratteri qualsiasi ? un carattere qualsiasi [...] ciascun carattere incluso.
Due caratteri separati da un '-' indicano un range. < ridirige l'input >, >> ridirige l'output 0,1,2 standard input, output, error | pipe & background % processi in background
(C-Shell, Korn Shell) %# numero del processo in background (C-Shell, Korn Shell) 1. fare
precedere il metacarattere dal carattere backslash (\) 2. includere
la stringa contenente uno o piu` metacaratteri in apici singoli (' ') ·
REDIREZIONE cmd > file memorizza l'output del comando nel file
specificato invece di visualizzarlo
a video cmd < file il comando considera come input il contenuto
del file cmd >> file memorizza l'output del comando nel file
specificato senza perderne il contenuto cmd 2>&1 ridirige lo standard error del comando nel
suo standard output ·
BACKGROUND e FOREGROUND ls -lR > list & bg permette
di eseguire il comando lanciato con il metacarattere '&' in background fg %# permette di restituire il controllo (foreground)
ad un processo lanciato in background ·
SCRIPT SHELL cat myshell cd /usr/users/micky find . -name *.c > /tmp/mytmp if [ -s /tmp/mytmp ] then echo "Found !" else echo "Not found ! " fi rm -f /tmp/mytmp ·
VARIABILI SPECIALI ·
comando write Message from utente (tty??) [data]..... write <user> [line] # write laura Hello, how are you? I just called to say Happy Birthday to you !!!! ctrl-d # ·
comando mail mail [utente] # id micky(250), users(10) ·
sort -m effettua solo
il merge, i file in input devono essere gia` ordinati -u elimina le parole
uguali eccetto una -o<output> file in cui memorizzare
l'output -i ignora i caratteri
non visualizzabili -r inverte l'ordine # cat caos #
sort caos lunedi`
domenica martedi`
giovedi` mercoledi` lunedi` giovedi`
martedi` venerdi`
mercoledi` :f visualizza
il nome del file corrente e la linea corrente . ripete il
comando precedente /stringa ricerca la stringa
dal punto corrente fino alla fine del file !comando esegue il comando
specificato ·
pg pg files... h help q termina il comando
pg blank/newline pagina successiva l linea successiva d o ^D visualizza mezza
pagina successiva . o ^L visualizza nuovamente
la pagina corrente n file successivo p file precedente /stringa ricerca la stringa
dal punto corrente fino alla fine del file ?stringa ricerca la stringa
dal punto corrente fino all'inizio del file !comando esegue il comando
specificato ·
vi ·
modo COMANDO ogni carattere digitato viene interpretato per eseguire un' azione specifica,
e' il modo in cui la sessione di vi inizia ·
modo INSERIMENTO ogni carattere digitato viene inserito come testo ^F pagina successiva ^B pagina precedente ^D mezza pagina successiva ^U mezza pagina precedente l un carattere a destra h un carattere a sinistra j linea successiva k linea precedente $ fondo linea 0 inizio linea w inizio parola successiva e fine della parola ... a, A append - inserisce dopo
il carattere corrente o dopo l'ultimo carattere
della linea i, I insert - inserisce nella posizione corrente o all'inizio
della linea o, O open - inserisce una nuova linea sotto o sopra
quella corrente x cancella un carattere dd cancella la linea corrente dG cancella dalla linea corrente
alla fine del file dw cancella una parola dfc
cancella fino alla prima occorrenza del carattere
c /main ?main :1,$ s/stringa da sostituire/stringa con cui sostituire/[g] :#,# s/stringa da sostituire/stringa con cui sostituire/[g] :#,#y posizionarsi nel punto in cui inserire il testo premere il tasto 'p' per inserire
il testo sotto la linea corrente, il tasto 'P' per inserire sopra alla linea corrente :#,#d oppure #dd dalla riga corrente posizionarsi nel punto in cui inserire il testo premere il tasto 'p' per inserire
il testo sotto la linea corrente, il tasto 'P' per inserire sopra alla linea corrente q esce se non
sono state effettuate modifiche q! esce senza
salvare eventuali modifiche w scrive il
file e <nomefile> edita il file specificato e# ritorna al
file precedente (2 file in linea) ·
AUTENTICAZIONE UTENTI Il
sistema effettua dei controlli sia sul nome dell' utente sia sulla correttezza
della password digitata ma non visualizzabile a video. La
password viene letta da terminale, 'criptata' ed il risultato e` confrontato
con la password registrata nel file /etc/passwd. Non
esiste un meccanismo di 'decript' della password. ·
PERMESSI DI ACCESSO A FILE 1. proprietario (u) 2. gruppo (g) 3. altri (o) 1. lettura (r) 2. scrittura (w) 3. esecuzione (x) -rwx-rw-r-- Il proprietario ha il permesso di leggere, scrivere ed eseguire il file Gli utenti dello stesso gruppo del proprietario possono leggere e scrivere
il file. Il resto degli utenti puo` solo leggere il file. ·
LOGIN SECURITY 1. I
terminali settati a 'secure' nel file /etc/tty non permettono il collegamento
al sistema come utente 'root'. 2. Solo
gli utenti appartenenti al gruppo system
(gruppo dell' utente root) possono eseguire il comando 'su', che permette di
cambiare utente all' interno della shell e, in particolare, di divenire l' utente
root. 3. I
tentativi di esecuzione del comando 'su' vengono registrati nel file /var/adm/sulog. E'
inoltre possibile attivare maggiori controlli per ottenere un maggior livello
di sicurezza (generalmente tale scelta avviene al momento della creazione di
un utente). 4. La
password deve : ·
essere almeno
di 6 caratteri ·
contenere
numeri, lettere maiuscole e minuscole 5. Tutti
gli utenti devono avere una password. ·
PASSWD passwd [utente] # passwd Old password : New password : Re-type new password : ·
lp cancel ·
lpstat -s visualizza un sommario dello stato dello
scheduler e delle stampanti -v visualizza il nome delle stampanti e i
device associati Su
Unix il file system ha una struttura, principalmente per motivi storici, ben
determinata. Le principali directory sono:
Testo: Corso Unix base
2. mappa
della dislocazione dei files
3. informazioni
per ogni file
TIPI DI FILES
·
APPARTENENZA AD UN GRUPPO
·
TIPO DI INTERFACCIA
DOCUMENTAZIONE IN LINEA
STRUTTURA DEL FILE SYSTEM
/ directory pricipale, contiene il kernel Unix ed e' la home directory
di root
/bin
eseguibili pricipali necessari al boostrap del sistema
/dev
contiene tutti i device driver
/etc
directory con contenuti "misti" (etcetera)
/home
directory di base per le utenze
/lib
librerie di sistema
/mnt
mount point per volumi rimovibili
/tmp
directory temporanea
/usr
directory per pacchetti aggiuntivi ed utenti di sistema
/usr/adm
directory con comandi e log di amministrazione
/usr/bin
eseguibili
/usr/lib
librerie
/usr/man
manuali
/var
directory per pacchetti aggiuntivi e parti variabili
Data: 1 Aprile 1995
Versione: 1.1.1
HTML editing: Meo Bogliolo