Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LESSENZA DI UNIX
Sezione A - Primi passi
IL SISTEMA OPERATIVO
Scopo di un sistema operativo consentire il funzionamento del computer.
Per raggiungere questo scopo, il sistema si deve occupare della gestione di:
- Terminali, in modo da consentire la comunicazione tra luomo e la macchina;
- Dischi magnetici, per poter disporre di un supporto dove memorizzare le
informazioni;
- Programmi, in modo da permettere il loro trasferimento dal disco magnetico,
dove sono archiviati, alla memoria, dove viene ceduto loro il controllo del
calcolatore per consentirne lesecuzione;
- Rete, in modo da consentire le comunicazioni tra i vari computer e il
conseguente utilizzo di risorse non disponibili sul computer locale.
Si osservi come il sistema operativo non faccia parte dei programmi effettivamente
utili allutente, quali programmi per lelaborazione dei testi, lesecuzione dei calcoli, lo
scambio di posta ecc. Tutti questi programmi sono applicativi scritti appositamente e
normalmente venduti a parte.
Il compito del sistema operativo quello di predisporre lambiente per lesecuzione di
tali programmi.
Tuttavia, poich molti di questi programmi sono particolarmente importanti per la
gestione del sistema, alcuni d questi vengono effettivamente distribuiti insieme al
sistema operativo.
INTRODUZIONE AL SISTEMA OPERATIVO UNIX
Il sistema operativo un insieme di programmi che servono a gestire le componenti
hardware, permettendo linterazione con la macchina.
Gestisce: memoria principale, memoria secondaria, processi, programmi e
Input/Output.
UNIX un sistema operativo multiutente e multitasking con funzioni di rete
integrate e pu essere utilizzato su sistemi che hanno diverse funzioni.
Il PC un personal computer, ovvero un elaboratore destinato allutilizzo personale;
chi lo accende e lo utilizza pu accedere ad ogni parte del computer e ad ogni
programma, ed ha a disposizione tutto lo spazio sul disco. In altri termini, il
padrone di tutta la macchina. Per la verit i PC hanno la possibilit di attivare la
richiesta di una password che consenta lutilizzo del computer soltanto allutente che
la conosca, tuttavia la scelta limitata ad impedire lutilizzo di tutto il computer o a
concederlo completamente.
Un computer che utilizza UNIX, invece, ha la possibilit di definire pi utenti e di
limitare le possibili operazioni consentite a ognuno, permettendo ad esempio
lesecuzione di un particolare programma e limitando eventualmente lutilizzo di vari
dispositivi, quali dischi o stampanti. Ad un computer UNIX possono essere collegati pi
terminali, e pi operatori possono eseguire contemporaneamente pi programmi,
ciascuno restando confinato nel proprio ambito, vincolato dai limiti concessi
dallamministratore del sistema.
UNIX un sistema multiutente in quanto permette a pi persone di accedere
contemporaneamente e condividere le risorse di un server.
Gli utenti devono connettersi digitando il loro nome utente ed una password prima di
poter usare un sistema multiutente; questa procedura di convalida protegge la
riservatezza di ogni utente e salvaguarda il sistema dagli usi non autorizzati.
Nel caso di UNIX si parla di sistema multitasking perch consente di eseguire pi di un
programma allo stesso tempo; per esempio, possibile aggiornare i record di un
database mentre la stampa di un documento avviene in background.
Questo pu avvenire perch tale sistema operativo dotato di scheduler, il quale
manda in esecuzione pi processi, assegnando a turno la cpu ad ognuno di essi.
Inoltre, grazie al sistema time-sharing, il processore funziona anche durante le
operazioni di Input/Output.
UNIX viene eseguito con una variet di computer maggiore rispetto alle possibilit
offerte da altri sistemi operativi, infatti disponibile sia su macchine di dimensioni
molto ridotte, sia su elaboratori di dimensioni molto ampie.
UNIX anche un sistema operativo portabile, il che significa che pu essere utilizzato
su diversi ambienti di elaborazione; anche se il principale utilizzo di questo sistema
operativo certamente in ambito scientifico.
Nel caso di UNIX, bench ogni costruttore adotti un dialetto differente del sistema,
anche vero che le differenze sono molto ridotte, se non addirittura inesistenti.
Nonostante i manuali di UNIX possano sembrare complessi e poco chiari, non esiste
parte di questo sistema operativo che non sia documentata fin dei minimi dettagli.
Questo rende UNIX un sistema particolarmente stabile e sicuro, in quanto sempre
possibile approfondire i motivi e la struttura di eventuali funzioni non gradite e trovare
una risposta utile per la risoluzione dei propri problemi.
Linux e UNIX
Linux un sistema operativo di tipo UNIX (multiutente e monolitico) che venne
rilasciato gratuitamente al pubblico nel 1991 da parte di Torvalds, il suo ideatore
originale.
Offre tutte le possibilit di UNIX a costo zero: abbastanza robusto da gestire attivit
impegnative con tutte le funzionalit di rete delle versioni commerciali di UNIX.
INTRODUZIONE ALLA SHELL DI UNIX
La shell un programma UNIX che interpreta i comandi immessi dalla tastiera.
Quindi, la shell non altro che la parte del sistema operativo UNIX dedita alla
gestione dellinterazione con lutente.
Si tratta di uninterfaccia a carattere in cui lutente impartisce i comandi al sistema
digitandoli ad un apposito prompt ed il sistema stampa sullo schermo del terminale
eventuali messaggi allutente in seguito allesecuzione dei comandi.
Dopo di che riappare il prompt, e linterazione pu continuare.
(Ovviamente per ottenere risposta necessario introdurre unistruzione precisa e
corretta, in caso di istruzione sbagliata apparir il messaggio command not
found).
UNIX offre diverse shell, tra le quali citiamo la shell Bourne, la shell Korn e la shell C.
Fu Steve Bourne a sviluppare la shell Bourne come primo elaboratore di comandi per
UNIX.
Un altro dipendente degli stessi laboratori, David Korn, svilupp invece la shell Korn:
questultima, compatibile con la shell Bourne, include molte estensioni, come una
funzione cronologica che permette di utilizzare una combinazione rapida di tasti per
rieseguire comandi immessi in precedenza.
La shell C invece concepita per i programmatori C.
Linux utilizza la shell Bash freeware come interprete dei comandi predefinito; il suo
nome lacronimo di Bourne Again Shell e include le caratteristiche migliori delle
shell Korn e Bourne.
Elenchiamo, alcuni tipi di shell (oltre a quelli sopra indicati):
sh
Bourne shell
bash
Bourne again shell
csh
C shell
tcsh
Teach C shell
ksh
Korn shell
Il secondo e terzo tipo di shell sono detti friendly, in quanto offrono il
completamento e la ripetizione delle istruzioni.
Indipendentemente dalla shell utilizzata, la comunicazione con UNIX avverr sempre
tramite linterprete shell.
Versioni moderne di UNIX forniscono X-Windows, ossia uninterfaccio grafica (a
finestre), che consente di inviare comandi tramite menu, utilizzando un mouse. In tal
caso abbiamo X-Term, emulatore di terminale che gira sotto X-Windows. Fornendo
localmente uninterfaccia a carattere.
Scelta della shell
Prima di lavorare con un sistema UNIX si deve determinare quale shell utilizzare come
interprete dei comandi. In realt, le shell fanno molto pi che interpretare comandi:
ciascuna di esse dotata di una serie completa di comandi integrati che in pratica la
trasformano in un linguaggio di programmazione di prima classe.
La scelta della shell avviene quando lamministratore del sistema configura laccount
utente; la maggior parte degli utenti sceglie la shell Bash, sebbene siano possibili
scelte diverse.
SCELTA DI NOME UTENTE E PASSWORD
Accesso a UNIX
Quando lutente effettua il login, la macchina gli assegna uno spazio sulla memoria di
massa, chiamato home directory (in genere di 100MB).
Una volta connessi ad un sistema UNIX, necessario accedere fornendo il nome
utente e la password. Apparir un prompt che richiede il login o il nome utente e la
password; per motivi di sicurezza questultima non visibile sullo schermo mentre
viene digitata.
Non si pu effettuare laccesso
Senza un account utente autorizzato.
Se la password non valida o se si aspetta troppo prima di immettere il nome e
la password.
Se durante la digitazione del nome o della parola chiave sono apportate delle
correzioni, non si ottiene conferma alla parola chiave, anche se le correzioni
apportate erano giuste. In questa fase di richiesta del nome utente e della
parola chiave non sono infatti consentite correzioni.
Se il nome stato digitato con lettere tutte maiuscole, il computer richiede la
parola chiave con il messaggio PASSWORD:, per indicare che vengono
accettati soltanto caratteri maiuscoli.
Anche se viene specificato un utente non corretto, ad esempio perch non
esistente, il sistema richiede comunque la password, e il messaggio generato
sempre login incorrect.
Quindi ogni utente possiede: un account, una password e una home directory.
INSERIMENTO DI COMANDI
Quando viene invocata una shell (automaticamente al login o esplicitamente):
1. Viene letto un file speciale nella homedirectory dello user, contenente
informazioni per linizializzazione;
2. Viene visualizzato il prompt, in attesa che lutente invii un comando;
3. Se lutente invia un comando corretto, la shell lo esegue e torna al punto 2.
Ad esempio,
inserendo bash si invoca la shell bash,
mentre il comando echo $shell stampa, sullo schermo del terminale, il percorso
della shell di login.
4. Se invece il comando sbagliato, viene visualizzato un messaggio derrore.
Se nome e parola chiave corrispondono a quanto registrato nel sistema, allora si
vedono apparire diversi messaggi e infine si ottiene il prompt.
Per interagire con UNIX si inserisce un comando, ossia del testo digitato dopo il prompt
dei comandi e seguito dalla pressione del tasto Invio.
UNIX un sistema case-sensitive, ossia distingue tra lettere maiuscole e minuscole (la
maggior parte dei comandi UNIX in minuscolo).
I comandi sono suddivisi in due categorie:
- Comandi di livello utente digitati per svolgere unoperazione, come il
recupero di informazioni o la comunicazione con altri utenti;
- Comandi di amministrazione del sistema, utilizzati dallamministratore per
la gestione del sistema.
Si deve conoscere la sintassi di un comando per inserirlo correttamente, ossia il
formato e le parole che contiene, cos come gli argomenti e le opzioni utilizzabili per
estendere e modificare le sue funzioni.
Per la maggior parte, i comandi sono costituiti da una sola parola.
Se il comando viene inserito con la sintassi corretta, UNIX lo esegue, altrimenti si
riceve un messaggio che indica che il sistema non in grado di interpretare il
comando.
In punto dello schermo in cui viene digitato il comando prende il nome di linea di
comando.
Ecco la sintassi generale dei comandi:
Sintas
si
Analisi
Per eseguire questa operazione si possono inserisce uno tra i comandi logout o
altrimenti si preme Ctrl+D.
A questo punto viene visualizzato il messaggio: Login : ed quindi possibile
spegnere il terminale.
exit,
root
tty1
ellen
tty1
john
tty2
jerry
tty3
Aug 12
07 : 56
Aug 12
08 : 15
Aug 12
08 : 15
Aug 12
08 : 21
2. Per visualizzare una linea di intestazioni di colonna con loutput del commando
who, digitare
who H e premere Invio. Apparir un elenco come il seguente:
USER
root
LINE
tty1
ellen
tty1
john
tty2
jerry
tty3
LOGIN-TIME
Aug 12
07 : 56
Aug 12
08 : 15
Aug 12
08 : 15
Aug 12
08 :21
FROM
root
tty1
ellen
tty1
john
tty2
jerry
tty3
Aug 12
07 : 56
Aug 12
08 : 15
Aug 12
08 : 15
Aug 12
08 :21
00 :
29
.
00 :
01
old
Loutput mostra che la persona connessa come root non ha eseguito alcuna
attivit negli ultimo 29 minuti e che la sessione di John inattiva da un minuto.
Il punto sulla linea corrispondente ad Ellen indica che la sua sessione stata
attiva nellultimo minuto, mentre la parola old sulla linea di Jerry segnala
lassenza di attivit nelle ultime 24 ore.
4. Se si desidera utilizzare pi opzioni sulla stessa linea di comando, si devono
digitare tutte dopo un solo trattino. Per esempio, si digita who -iH e si preme
Invio per vedere un elenco di utenti con i tempi di inattivit e le intestazioni di
colonna, come mostrato nellesempio seguente:
USER
LINE
LOGIN-TIME
IDLE
FROM
root
tty1
ellen
tty1
john
tty2
jerry
tty3
Aug 12
07 : 56
Aug 12
08 : 15
Aug 12
08 : 15
Aug 12
08 :21
00 :
29
.
00 :
01
old
Il comando whatis
A volte ci si accorge che le pagine di manuale contengono pi informazioni di quelle
che occorrono.
Supponiamo di voler visualizzare un altro file presente sempre nella directory /etc
chiamato termcap: questo file a pi pagine contiene molte specifiche relative ai
terminali riconosciuti dal sistema Linux.
Il comando cat non pratico per la visualizzazione di questo file, che pi lungo di
una schermata (23 linee), tuttavia si possono usare i comandi more e less per
leggerlo una schermata alla volta.
1. Digitando more /etc /termcap al prompt dei comandi e premendo Invio,
si visualizza la prima schermata del file.
2. Premendo la barra spaziatrice si passa alla schermata successiva. Non
possibile utilizzare il comando more per tornare ad una schermata
visualizzata in precedenza.
3. Si termina la visualizzazione digitando q (per quit).
Mentre il comando more visualizza un file lungo, una schermata alla volta, scorrendo
in avanti;
il comando less visualizza un file lungo, una schermata alla volta, scorrendo in avanti
e indietro.
Si utilizzano i comandi head e tail per visualizzare rispettivamente le prime o le
ultime linee di un file. Tramite il comando head -n si visualizzano le prime n linee
del file specificato; analogamente tail -n, visualizza le ultime n linee del file
specificato.
Supponiamo di aver creato un file di nome note e di voler aggiungere ad esso una riga
Ricordarsi della prenotazione, includendo nel file anche il calendario mensile
appropriato come riferimento.
1.
2.
3.
4.
5.
La maggior parte delle shell fornisce una capacit di base di editing sulla linea
di comando e mantiene una cronologia dei comandi utilizzati pi di recente.
Utilizzando i tasti freccia su e gi ci si sposta in avanti o indietro nellelenco dei
comandi recenti.