SISTEMI UNIX
I sistemi operativi UNIX, nati all'Università di Berkeley, sono ormai
diffusi in tutto il mondo e sono disponibili su vari tipi di macchine.
Sono sistemi operativi multi-utente a partizione di tempo e girano su macchine
che, a differenza dei PC, necessitano di un gestore di sistema che si deve
occupare sia della ripartizione dello spazio disponibile agli utenti, che
di eventuali problemi di mal funzionamento del sistema. Ogni utente comunica
col calcolatore attraverso una "Shell" che interpreta i comandi e attiva
dei programmi ("processi") che possono essere eseguiti anche in parallelo
(ma ne compare al piu` uno per terminale). Le Shell più comunemente usate
sono "csh" e "sh". Ogni sistema dispone di programmi predefiniti con varie
funzionalita`: per produrre documenti, sviluppare programmi (es. in Pascal,
C), utilizzare la posta elettronica, ecc.
Accesso al sistema e prime operazioni
Per potersi collegare a un sistema UNIX è necessario essere in possesso
di un "account" (nome utente) e di una "password" (codice di riconoscimento).
Ricordarsi, come regola generale, che dopo avere scritto una risposta a
una richiesta del calcolatore bisogna battere il tast RETURN (quindi lo
ometteremo di qui in avanti).
login:
si deve inserire il nome utente;
password:
si deve inserire la stringa scelta come codice di riconoscimento (nota
che la stringa non viene visualizzata). E' buona regola, per motivi di
sicurezza, scegliere stringhe "difficili", che contengono cioe' anche numeri
e caratteri strani;
A questo punto compaiono i messaggi del giorno e poi il "prompt" (simbolo
di disponibilità) che può essere formato da un numero seguito da > oppure
da [nome_macchina:~], ecc.. La macchina è quindi pronta a ricevere nuovi
comandi. Un comando non viene interpretato fino a quando non si batte il
tasto RETURN quindi in presenza di errori di battitura si può cancellare
l'ultimo simbolo scritto premendo il tasto DELETE o BACKSPACE (dipende
dal terminale). Altre operazioni si eseguono tenendo premuto il tasto CONTROL
(o CTRL o ^).
^U
cancella l'intera linea;
^C
interrompe un programma in corso di esecuzione (a parte qualche rara eccezione);
^S
ferma la stampa prodotta sul video;
^Q
riprende la stampa su video sospesa con ^S;
Per uscire dalla shell corrente occorre dare il comando "logout" o "^D",
per uscire dalla sessione occorre battere "exit" e deve ricomparire la
"login:": attenzione, non basta spegnere il video!!! Se non si riesce ad
uscire vuol dire che ci sono dei programmi, la cui esecuzione è stata
"sospesa" dall'utente, che vanno prima terminati.
apropos Termine
elenca tutti i comandi UNIX che riguadano la parola specificata;
whatis Comando
fornisce una breve descrizione di un comando;
man NomeComando
presenta il manuale del comando;
Gestione della memoria permanente
I dati permanenti sono organizzati in un sistema di archiviazione chiamato
"file system" che ha una struttura gerarchica ad albero: la radice "root"
(chiamata "/" o "slash") è uguale per tutti gli utenti; le foglie sono
"files" cioe' oggetti che contengono i programmi e i dati degli utenti;
i nodi interni sono invece "directory", cioe' collezioni di file o di altre
directory. Directory diverse possono contenere file con lo stesso nome,
quindi per ritrovare l'informazione è necessario definire un cammino nell'albero:
il "pathname". Il pathname è definito scrivendo la sequenza di directory
che si incontrano, divise da /. Ogni utente ha la propria "working directory"
e che inizialmente è la "home directory". Il pathname può essere "relativo",
cioe' a partire dalla directory in cui ci si trova, o "assoluto", cioe'
a partire dalla radice. Ad esempio l'utente Rossi ha una home che contine
la directory lavori e casa. La directory casa contine una directory famiglia
che a sua volta contiene il file piero. Per accedere al file piero dalla
home directory il sig. Rossi dovrà seguire il pathname: casa/famiglia
.
cd pathname
ci si sposta dalla directory corrente (inizialmente la home directory)
alla directory definita dal pathname (se esiste). Ad esempio il sig. Rossi
batterà cd casa/famiglia per poter accedere al file piero;
cd
da qualunque punto si torna alla home directory. Se il sig. Rossi, che
si trova dentro la directory famiglia, vuole tornare alla home directory
deve battere cd;
cd ..
si risale al nodo padre nell'albero. Se il sig. Rossi invece di battere
cd, battesse cd .. si sposterebbe sotto la directory casa;
pwd
stampa il nome della directory corrente;
ls
elenca il file e le directory all'interno della directory corrente, eccetto
i file che iniziano con ".". Ad esempio se il sig. Rossi si trova sotto
la sua home directory con ls trova lavoro casa;
Diritti d'accesso
ogni file è posseduto da almeno un propietario ("owner"), ed ha una serie
di diritti d'accesso (lettura "r", scrittura "w", esecuzione "x") rispetto
a diversi gruppi di utenti: l'utente ("user") "u", il gruppo ("group")
g a cui u appartiene e tutti gli altri utenti ("others") "o". "a" ("all")
invece comprende "u", "g" e "o".
ls -la
-l sta per long list e -a per all entries: elenca tutti i file e le directory
(anche i file che iniziano con .) mostrando anche i vari diritti di accesso
ai file (i primi 4 sono relativi a "u", poi i seguenti 3 a "g" e gli ultimi
3 ad "o"), il nome dell'utente, il gruppo a cui appartiene, lo spazio occupato,
la data dell'ultima modifica al file/directory, il nome del file/directory.
Es: -rwxr-xr-x 1 rossi docenti 1672 mar 8 16:25 index.html l'utente rossi
del gruppo docenti ha modificato il file index.html l'8 marzo alle 16:25.
Sul file l'utente può leggere, scrivere, eseguire, gli altri ("g" ed "o")
possono solo leggere ed eseguire; Nota: il primo elemento della lista può
essere - o d e indica rispettivamente che il file è un semplice file o
una directory;
chmod EntitàAzioneDiritto nomefiles
è un comando che permette all'utente di cambiare il diritto di accesso
ai suoi file. Azione è "+" per aggiungere o "-" per togliere i diritti
e Entità è "u" o "g" o "o", o varie combinazioni, Diritto è "r", o "w"
o "x". Ad esempio chmod go+w index.html aggiunge il diritto di scrittura
sul file index.html a g ed o. Facendo adesso ls -la si avrà: -rwxrwxrwx
1 rossi docenti 1672 mar 8 16:25 index.html;
mkdir NomeDirectory
crea una nuova directory di nome NomeDirectory nella directory corrente;
rmdir NomeDirectory
rimuove la directory di nome NomeDirectory: prima di farlo è necessario
cancellare tutti i file contenuti;
mv Nomefile NuovoNomefile
cambia il nome di Nomefile in NuovoNomefile e cancella il vecchio NuovoNomefile
se esisteva già
mv Nomefile NuovaDirectory
sposta Nomefile nella directory NuovaDirectory cancellando eventualmente
il vecchio NuovoNomefile se esisteva già
cp Nomefile NuovoNomefile
crea un nuovo file NuovoNomefile che ha lo stesso contenuto di Nomefile.
Se il file NuovoNomefile esisteva già verrà sovrascritto;
cp Nomefile NuovaDirectory/NuovoNomefile
copia Nomefile nel file NuovoNomefile della directory NuovaDirectory cancellando
eventualmente il vecchio Nomefile se esisteva già
rm -i Nomefile
cancella il file Nomefile; l'opzione -i, che può essere omessa, serve
per avere una richiesta esplicita della cancellazione dal sistema;
rm *
cancella tutti i file della directory corrente;
cat ListaNomefile > NuovoNomefile
concatena il contenuto dei file della ListaNomefile (lista composta da
identificatori di file, separati da spazi) e li memorizza in NuovoNomefile
concellandone eventualmente il precedente contenuto;
more ListaNomefile
visualizza sul video, una pagina per volta, il contenuto dei file della
ListaNomefile. Per visualizzare la pagina successiva premere SPACEBAR,
per visualizzare una riga successiva premere RETURN, per uscire digitare
q e per avere ulteriori informazioni digitare ? ;
emacs Nomefile
oppure
vi Nomefile
richiamano un Editor, emacs o vi;
lpr Nomefile
(lp Nomefile in sistemi SUN) invia alla stampante il contenuto di Nomefile.
Alcune stampanti ammettono solo file postscript (ps);
lpq
(lpstat in sistemi SUN) mostra i job in corso nella stampante;
lprm NumJob
cancella dalla coda di stampa il proprio job NumJob visto con il comando
lpq;
ps
visualizza informazioni sui processi attivi;
kill -9 NumProc
termina il processo NumProc;
history
fornisce la lista degli ultimi comandi eseguiti. Con "!NumeroComando" o
"!NomeComando" si ripete un comando. Con "!!" si riesegue l'ultimo comando;
Comando&
si esegue il comando in "background";
jobs
elenca tutti i comandi in corso, anche quelli in background;
kill %NumeroJob
uccide il job con NumeroJob in background;
%NumeroJob
riporta in "foreground" un comando in background;
^Z
sospende, ma non uccide, il processo che puo` essere ripreso con %NumeroJob
o bg%NumeroJob per farlo ripartire in background;
alias Abbreviazione Comando
serve per definire delle abbreviazioni di comandi usati spesso;
password
o yppasswd
comando per modificare la password corrente. Compare "Old Password" e bisogna
digitare quella vecchia, poi compare per due volte "New Password" e bisogna
digitare quella nuova;
pc NomeFile.p
pc è il compilatore Unix per il linguaggio Pascal. Se il file compilato
non contene errori non compare nulla e viene creato un file a.out. Per
eseguirlo si deve scrivere a.out e inserire i poi dati in input;
cc NomeFile.c
cc è il compilatore Unix per il linguaggio C. Se il file compilato non
contene errori non compare nulla e viene creato un file a.out. Per eseguirlo
si deve scrivere a.out e inserire i poi dati in input;
p2c NomeFile.p
p2c è il comando per tradurre programmi da Pascal a C (su alcune
macchine Linux). Crea il file NomeFile.c.
gcc NomeFile.c
gcc è il compilatore per il linguaggio C (su alcune
macchine Linux). Se il file compilato non
contene errori non compare nulla e viene creato un file a.out. Per eseguirlo
si deve scrivere a.out e inserire i poi dati in input;
Il file system di Unix può in realtà essere visto come un grafo in
quanto è possibile collegare fra loro vari file attraverso un "link".
Uno stesso file è cosi' inserito in più directory contemporaneamente
attraverso un "hard link" o un "soft link". I due link differiscono in
quanto se un file con degli hard link viene cancellato in una directory,
resta accessibile dalle altre directory, se il link invece era soft, il
file non è più accessibile.
ln Nomefile directory
inserisce con un link il file Nomefile nella directory;
ln -s Nomefile directory
crea un soft link;
Informazioni sul sistema
u
visualizza il nome degli utenti collegati al sistema;
w
visualizza il carico del sistema e le attività svolte dai vari utenti;
Come ci si può collegare da una macchina all'altra?
Il modo più sicuro è usare SSH, in alternativa (ma non fatelo!!!)
si può usare TELNET.
ssh -l login indirizzo
Permette di collegarsi in modo "SICURO" alla macchina definita da indirizzo
con la login scelta. Ad esempio il signore con la login bic99 a biologia
potrà collegarsi dal centro di calcolo usando il comando
ssh -l bic99 biostud01.bio.univ.trieste.it.
Dopo aver dato il comando comparirà la richiesta di password e bisognerà
dargli quella della macchina di indirizzo (ad es. quella di
biologia).
A questo punto è come se si lavorasse sulla macchina di indirizzo
(ad es. quella di biologia).
telnet indirizzo
Permette di collegarsi in modo "INSICURO" alla macchina definita da indirizzo.
Ad esempio dal centro di calcolo si potrà usare il comando
telnet biostud01.bio.univ.trieste.it.
Dopo aver dato il comando comparirà la richiesta di login e di password della macchina a
cui ci si è collegati (ad es. la login bic99 e la password di
biologia).
A questo punto è come se si lavorasse sulla macchina di indirizzo
(ad es. quella di biologia).
Come si possono trasferire i file da una macchina all'altra?
Il modo più sicuro è usare SFTP, in alternativa (ma non fatelo!!!)
si può usare FTP.
sftp indirizzo login
Permette al signore con una certa login
di caricare e scaricare i file in modo "SICURO" sulla/dalla macchina definita da
indirizzo. Ad esempio dal centro di calcolo si potrà usare il comando
sftp biostud01.bio.univ.trieste.it bic99.
Dopo aver dato il comando comparirà la richiesta di password e
bisognerà
dargli quella della macchina indirizzo (ad es. quella di
biologia).
A questo punto si potranno fare varie cose.
sftp> ls
dice quali file e directory sono sulla macchina di indirizzo
(ad es. su quella di biologia);
sftp> lls
dice quali file e directory sono sulla macchina da cui
ci si sta collegando (ad es. su quella del centro di calcolo);
sftp> cd pippo
permette di entrare nella directory di nome pippo
sulla macchina indirizzo (ad es. quella di
biologia);
sftp> lcd pluto
permette di entrare nella directory di nome pluto
sulla macchina da cui ci si sta collegando;
sftp> get mario
permette di prendere il file di nome mario (nella
directory in cui si è ) dalla
macchiana indirizzo e copiarlo sulla macchina da cui ci si sta collegando (nella
directory in cui si è );
sftp> put anna
permette di prendere il file di nome anna dalla
macchina da cui ci si sta collegando (nella directory in cui si è )
e copiarlo sulla macchina indirizzo (nella
directory in cui si è );
sftp> help
permette vedere la lista dei comandi di sftp;
sftp> quit
permette di chiudere sftp;
ftp indirizzo
permette
di caricare e scaricare i file in modo "INSICURO" sulla/dalla macchina
definita da
indirizzo. Ad esempio dal centro di calcolo si potrà usare
il comando
ftp biostud01.bio.univ.trieste.it.
Dopo aver dato il comando comparirà la richiesta di login (ad es. bic99) e di password e
bisognerà
dargli quella della macchina a cui ci si è collegati (ad es. quella di
biologia).
A questo punto si potranno fare varie cose.
ftp> ls
dice quali file e directory sono sulla macchina indirizzo
(ad es. su quella di biologia);
ftp> !ls
dice quali file e directory sono sulla macchina da
cui ci si sta collegando
(ad es. su quella del centro di calcolo);
ftp> cd pippo
permette di entrare nella directory di nome pippo
sulla macchina indirizzo;
ftp> lcd pluto
permette di entrare nella directory di nome pluto
sulla macchina da cui ci si sta collegando;
ftp> ascii
va scritto se si vogliono caricare/scaricare file testo (cioe'
file di programmi pascal, file che terminano con .ps, ecc.);
ftp> binary
va scritto se si vogliono caricare/scaricare file binari;
ftp> get mario
permette di prendere il file di nome mario (nella
directory in cui si è ) dalla
macchiana indirizzo e copiarlo sulla macchina da cui ci si sta collegando (nella
directory in cui si è );
ftp> put anna
permette di prendere il file di nome anna dalla
macchina da cui ci si sta collegando (nella directory in cui si è )
e copiarlo sulla macchina indirizzo (nella
directory in cui si è );
ftp> ?
permette vedere la lista dei comandi di ftp;
ftp> quit
vi permette di chiudere ftp;
scp nomefile login@indirizzo:/home/login/.
permette
di scaricare file in modo "SICURO" sulla macchina
definita da
indirizzo. Ad esempio collegandosi a biologia si potrà usare
il comando
scp nomefile bic99@biostud02.bio.univ.trieste.it:/home/bic99/.
per scaricare nella proprio home di biologia il file nomefile.
Dopo aver dato il comando comparirà la richiesta di password e
bisognerà
dargli quella della macchina a cui ci si è collegati (ad es. quella di
biologia).
scp login@indirizzo:/home/login/nomefile .
permette
di caricare file in modo "SICURO" dalla macchina
definita da
indirizzo in locale. Ad esempio collegandosi a biologia si
potrà usare
il comando
scp bic99@biostud02.bio.univ.trieste.it:/home/bic99/nomefile .
per scaricare nella proprio home locale il file nomefile.
Dopo aver dato il comando comparirà la richiesta di password e
bisognerà
dargli quella della macchina a cui ci si è collegati (ad es. quella di
biologia).
Come si possono caricare e scaricare file su dischetto?
I dischetti devono essere formattati DOS. Meglio se ad alta densità.
mdir
legge il contenuto della directory corrente del dischetto;
mcd prova
entra nella directory di nome prova del dischetto;
mmd pascal
crea una directory di nome pascal nel dischetto;
mrd pascal
cancella la directory di nome pascal dal dischetto;
mdel A:/pippo
cancella il file di nome pippo dal dischetto;
mcopy paperino A:/
copia il file di nome paperino dalla macchina
da cui ci
si sta collegando sul dischetto;
mcopy -t paperino A:/nonnapapera
copia il file (TESTO) di nome paperino dalla macchina
da cui ci
si sta collegando sopra il file di nome nonnapapera del dischetto (o dentro la
directory nonnapapera);
mcopy A:/paperone
copia il file di nome paperone dal dischetto alla
macchina da cui ci si sta collegando;
mcopy A:/paperone paperinik
copia il file di nome paperone dal dischetto
sul file paperinik (o nella directory paperinik) della macchina da cui ci si sta
collegando;
Il computer è impazzito
I comandi vanno avanti da soli. Mi si è bloccato tutto! Cosa faccio?
Prima di tutto provate a uccidere la finestra.
Poi provate a usare:
CTRL^C
interrompe il programma in corso di esecuzione;
CTRL^Z
sospende il programma in corso di esecuzione;
ps
visualizza informazioni sui processi attivi. Se per esempio si stava facendo un
ssh e si è piantato tutto, bisogna guardare con ps se compare la parola ssh
accanto alla propria login.
In caso affermativo si usa il comando:
kill -9 numeroprocesso
uccide il processo con numeroprocesso
(che si
vede da ps);
ps -aux
vede tutti i processi, anche quelli che non compaiono
con ps. Il processo assassino si uccide anche in questo caso con la kill.
Come si esce dal sistema?
Prima di tutto si uccidono le varie finestre scrivendo exit o cliccando
sulla x in alto a destra.
Poi si esegue uno dei seguenti comandi:
Si cerca nell'icona in basso a sinistra la voce ESCI oppure EXIT oppure FINE
SESSIONE oppure LOGOUT, si apre e si seguono tutti i passi. Alla fine, se
tutto è stato fatto correttamente deve comparire la finestra iniziale
dove si chiedono login e password. Se non compare chiedete aiuto!!!
Poi spegnete SOLO il video.