13/11/17 Ercole Palmeri 1
Cosa e' Gnu/Linux ?
✔ Gnu/Linux e` un Sistema Operativo LIBERO,
che funziona su quasi tutti gli hardware.
✔ Libero in questo caso signifca:
✒ APERTO, che tutti possono leggere, usare,
modifcare, adattare purche` non vietino ad altri
di fare altrettanto e purche' si rendano note a
tutti le modifche fatte
✒ GRATIS
13/11/17 Ercole Palmeri 2
Dove trovare Gnu/Linux ?
✔ Gnu/Linux e` scaricabile da rete, copiabile da
un amico, recuperabile su tante riviste....
✔ Il punto di partenza su rete e'
www.linux.org
✔ ma potete trovarlo, insieme a programmi e
documentazione, distribuito su numerosi siti, e sotto
diverse forme e distribuzioni
13/11/17 Ercole Palmeri 3
Cosa è un Sistema Operativo ?
Un qualsiasi calcolatore si basa, dal 1965, su 3
''elementi'':
● HARDWARE, il ''nudo metallo''
● SOFTWARE, qualche cosa che mi fa fare delle cose
utili e/o divertenti (...i programmi...)
● SISTEMA OPERATIVO, qualche cosa che fa ''parlare''
l'HW con il SW...
13/11/17 Ercole Palmeri 4
Cosa è un Sistema Operativo ?
Nel 1969 nasce il primo SISTEMA OPERATIVO
MODERNO, che faceva si che se il programma
''si piantava'', si piantava solo lui ma la
macchina continuava a funzionare.
Questo sistema operativo era, ed è ancora, UNIX.
Dal 1970 ad oggi è il sistema operativo più usato nella
ricerca, nelle università, su Internet.
13/11/17 Ercole Palmeri 5
Breve storia di Internet
Nel 1957:
● i sovietici lanciano lo Sputnik...
● Gli americani creano ARPA (Advanced
Research Projects Agency) che nel 1958 lancia
il progetto di ARPA-NET.
● Nel 1964 i militari lasciano il progetto in mano al
Club di 'Modellismo ferroviario' del MIT e il
dipartimento di Elettronica di Stanford
13/11/17 Ercole Palmeri 6
Breve storia di Internet
Prima connessione tra 2
computer Agosto 1969
Prima connessione tra 4
computer
Dicembre 1969...
Nella stesso periodo esce il
primo UNIX
per le universita`...
Internet nasce
nel 1969
con questo
disegnino
13/11/17 Ercole Palmeri 7
Breve storia di Internet
● Nel 1974 Vint Cerf e Bob Kahn defniscono lo standard
TCP che, insieme a IP, è quello con cui, tutt'ora,
funziona Internet e TUTTE le reti di computer;
● Nel 1984 ARPA-NET si divide in MIL-NET e Inter-NET.
MIL-NET tutt'ora usa TCP/IP del 1974;
● 1988: 2 November - Internet worm tira giù circa 6.000
dei 60.000 hosts di Internet;
● 1992: esce World-Wide Web (WWW) scritto da Tim
Berners-Lee del CERN e connette CERN e Fermilab...
13/11/17 Ercole Palmeri 8
Come/Chi gestisce Internet ?
● Già nel 1969 fu deciso che NESSUNO avrebbe gestito internet
dall'alto;
● Tutto si basava “e si basa tutt'ora” sui Request For
Comments (RFC). La Richiesta di Commenti (RFC) è un tipo
di pubblicazione della IETF (Internet Engineering Task Force)
e della Società Internet (ISOC), i principali organismi di
sviluppo tecnico e normative per Internet.
● L'unica cosa centralizzata e' l'assegnazione degli indirizzi (IP,
hostname), fatta da NIC per conto della IETF di cui chiunque
(compreso il sottoscritto) con un minimo di requisiti tecnici puo'
entrare a far parte, dire la sua, votare....
13/11/17 Ercole Palmeri 9
Richard Matthew Stallman alias RMS
● Nel 1984, uno smanettone del MIT decide di iniziare a scrivere un
sistema operativo libero, cioè SENZA LICENZA;
● Chiede aiuto in rete, e la gente risponde...
● Il tutto ''a gratis'', su macchine vecchie e recuperate....solo perchè
credono che
''..chi usa un computer deve essere libero di cambiare i programmi per
soddisfare le sue necessità e di scambiare conoscenza con gli altri,
perchè l'aiuto reciproco è, o dovrebbe essere, alla base della società...''
● Il progetto si chiamava, e si chiama, GNU (GNU is not Unix
...acronimo ricorsivo...).
13/11/17 Ercole Palmeri 10
GNU / Linux
● Nel 1985 viene fondata la Free Software
Foundation, che da allora si occupa di sviluppare e
diffondere software libero.
● Dal 1998 si occupa anche, ad esempio, di scrivere
encicopledie, dizionari, libri di testo in Licenza
GNU.
● Con cui, ad esempio, si stanno popolando
biblioteche in africa, asia, america latina...
13/11/17 Ercole Palmeri 11
Open Source o Sorgente Aperto
Il termine Open Source venne introdotto nel 1998 quale termine commerciale per indicare il
“software libero”.
Si voleva enfatizzare il fatto che il software Open Source non vuol dire necessariamente
GRATUITO.
E' stata fondata la OSI (Open Source Initiative) allo scopo di promuovere il software
conforme alla Open Source Directive.
Libero indica diverse “liberta” ad esempio:
●
Ridistribuzione Libera del software e del codice
●
Il Codice Sorgente e Aperto e disponibile per lettura, modifiche, analisi, controllo
●
Prodotti derivati da prodotti GPL devono avere licenza GPL
●
Copyright dell'autore
Differenza tra Open Source e Software Libero
free as beer vs. free as speech
13/11/17 Ercole Palmeri 12
Fasi di sviluppo
●
1994 Viene rilasciata la prima versione definitiva 1.0. Nascono RedHat, Debian, SUSE ad oggi
le distribuzioni piu diffuse. Linux, che resta copyrighted by Linus Torvalds, diventa ufficialmente
un software aperto, abbracciando in pieno la General Public License (GPL) del movimento
GNU Open Source. Nascono i primi LUGs (Linux User Groups), ormai diffusi anche in Italia.
●
1995 Compaiono sul mercato nuove distribuzione commerciali come Caldera Linux. Kernel 1.2
out in Marzo. Dal kernel 1.3 in sviluppo si passera direttamente al 2.0
●
1996 Rilasciata la versione 2.0. Compaiono le prime versioni tradotte in piu lingue. Linux
necessita di una mascotte: nasce TUX, il pinguino piu famoso al mondo.
●
1999 Dopo lunga attesa il kernel 2.2 vede la luce.
●
2001 Agli inizi dell'anno, dopo varie pre-version, su kernel.org appare l'immagine da
19.788.626 byte del 2.4.0 La prima release di un altro stable thread.
●
Oggi Linux e una reale alternativa al mondo Microsoft e Unix, ci sono milioni di utenti, migliaia
di sviluppatori e un mercato in espansione. E' presente in sistemi integrati, e usato per il
controllo di dispositivi robotizzati e ha volato a bordo dello shuttle, praticamente gira su oggetti
elettronici di tutti i tipi, dai palmari alle workstation Alpha, risultando l'OS in assoluto piu
soggetto a porting. Mac e alle origini di IoS.
13/11/17 Ercole Palmeri 13
Kernel: cosa è il Kernel ?
Per kernel si intende il cuore di un sistema operativo.
Il codice che gestisce le risorse presenti sul sistema e le
rende disponibili alle applicazioni.
Il kernel si occupa principalmente di gestire:
● le comunicazioni con l'hardware del sistema (device driver)
● i fle system e la memoria
● l'accesso alle risorse da parte dei processi (le applicazioni eseguite sul sistema)
13/11/17 Ercole Palmeri 14
Kernel
13/11/17 Ercole Palmeri 15
Kernel: Versioni del Kernel
Le versioni del kernel Linux sono identificate con numeri dal significato ben
preciso. Per esempio il kernel 4.12.00 ha:
●
4 Major Number
●
12 Minor Number
●
00 Revision (patch)
Major Number
Il Major Number identifica il valore piu alto della revisione del kernel.
Il rilascio di un kernel con un Major Number successivo rappresenta un
evoluzione “notevole” in termini di funzionalita eeo di architettura rispetto il
precedente.
I kernel della serie 1.x sono ormai piuttosto vecchi e non piu usati.
13/11/17 Ercole Palmeri 16
Kernel: Versioni del Kernel
Minor Number
Se Pari il kernel viene considerato stable e pronto per sistemi in produzione,
Se Dispari si considera in development da usare con cautela o per sperimentazione. Le release stable
sono sempre figlie delle devel precedenti.
Per esempio il kernel stable versione 2.6.22 e stabile, mentre quello in sviluppo e la 2.7.x (da cui
derivera la 2.8.x o direttamente la 3.0.x).
Solitamente nei kernel stable si tende a fare maintenance e ad implementare solo le features
strettamente necessarie, lasciando a quello in development lo sviluppo di nuove funzionalita.
Revision (patch)
Indica la revisione (patch) corrente.
E' un numero progressivo che parte da 0.
Tra due revisioni successive possono passare da pochi giorni a varie settimane.
Esistono inoltre varie patch temporanee, che rappresentano stadi intermedi STABILI prima della
release di una revisione definitiva. Ha senso utilizzarle subito solo in caso di utilizzo di kernel con
gravi problemi di sicurezza o stabilita.
13/11/17 Ercole Palmeri 17
Kernel: monolitico o modulare ?
●
Monolitico: singolo file binario eseguibile in modalita "kernel" che
contiene il gestore del processo, della memoria, del sistema, device
driver ecc.. Esempi di tali sistemi sono UNIX, Linux, MS-DOS.
– piu veloce perché il codice viene caricato al bootstrap dell'OSc
– occupa maggiori risorse del sistemac
– piu stabile perche non richiede ulteriori moduli, evitando cosi
pericolose dipendenzec
●
Modulare: kernel con la capacita di caricare o scaricare parti di
codice (moduli) secondo necessita e richieste. Puo esserlo Linux
configurandolo in fase di pre-compilazione.
– utilizzato da tutte le distribuzioni LINUX
13/11/17 Ercole Palmeri 18
Distribuzioni
Una Distribuzione (distro) e un confezionamento (packaging) di Linux, con procedure che rendono
comoda e semplice l'installazione del Sistema Operativo e degli applicativi.
Le distribuzioni differiscono per:
●
Numero e versioni dei programmi installabilic
●
Versione del kernel utilizzata e modalita di pre-installazione (il kernel solitamente non viene compilato
durante una normale installazione)c
●
Procedura di installazione (interfaccia utente e possibilita di definire opzioni e scegliere quale software
installare)c
●
Organizzazione di file di configurazione, programmi, log nel file systemc
●
Configurazioni predefinite del software installato.
Alcune distribuzioni sono disponibili in forma gratuita sotto licenza GPL. Altre sono a pagamento. Il costo
e giustificato da:
●
maggiore stabilita (viene eseguito un debug piu spinto prima di rilasciare una versione)
●
presenza di programmi con licenza NON GPL
●
supporto tecnico
13/11/17 Ercole Palmeri 19
Distribuzioni
Distribuzione Note Web
Red Hat Distribuzione orientata ad
implementazioni e applicazioni di
tipo Enterprise
www.redhat.com
Fedora 27 Versione Open Source derivata da
RedHat
https://getfedora.org/
Mandriva Lx 3.02 ex Mandrake ha dovuto cambiare
nome per problemi di copyright
https://www.openmandriva.org/
S.U.S.E. enterprise 12 Acquisita da Novell. Tramite Novell
Open enterprise Server supporta i
servizi Netware.
https://www.suse.com/
Slackware 14.2 Una delle prime amata dai “puristi” http://www.slackware.com/
13/11/17 Ercole Palmeri 20
Distribuzioni
Distribuzione Note Web
Debian 9.2 Storica http://www.debian.org/
Ubuntu 17.10 Preinstallata da DELL, Acer e Asus https://www.ubuntu.com/
Linspire, attualmente
non piu attiva
Pubblicizzata come la distribuzione
piu semplice da usare
FreeNAS Per la realizzazione e gestione di
server NAS
http://www.freenas.org/
Gentoox Distribuzione nata per XbOX http://gentoox.shallax.com/
13/11/17 Ercole Palmeri 21
Linux per Google
●
Android
– Basato su linux Kernel v.2.6.5
– Talvolta incluso fra le distribuzioni di GNUeLinux
●
ChromeOS
●
– Inizialmente basato su Ubuntu (poi Gentoo)
13/11/17 Ercole Palmeri 22
Preparazione e installazione
Durante l'installazione verrà chiesto come partizionare il disco rigido. diskdruid o fdisk sono i
programmi più utilizzati dalle varie distribuzioni.
Come minimo sono richieste almeno due partizioni:
● una partizione generale (/, root) in cui saranno memorizzati tutti i fle.
● una partizione di swap (usata come Memoria Virtuale)
E' consigliato creare le seguenti partizioni:
● / (root), sotto la quale stanno tutte le altre directory
● /boot (dove risiedono il kernel ed i fle di boot. 120 Mb di spazio possono bastare)
● /var (fle che cambiano di dimensione, tipicamente i log. E' utile averla su partizione
indipendente per evitare che un aumento inatteso dei log riempa tutto il flesystem (100 Mb).
● /home (fle di tutti gli utenti. Può essere piccola e praticamente inutilizzata (mail, dns server)
o molto grossa e piena di documenti (web, fle server)
● /tmp dove risiedono fle temporanei.
13/11/17 Ercole Palmeri 23
Preparazione e installazione
Qualora ci fosse un disco rigido gia partizionato e possibile installare
ugualmente Linux senza perdere i dati esistenti, utilizzando Gparted.
Gnome PARTition Editor - http:eegparted.sourceforge.nete
E' possibile ridimensionare le partizioni esistenti mantenendone il contenuto
inalterato e liberare lo spazio necessario all'installazione di Linux.
Alcune distribuzioni permettono di utilizzare Gparted durante l'installazione.
Si puo scaricare una distribuzione Live minima (circa 50 Mb) per creare un CD
o una chiave USB avviabile per eseguire il partizionamento e poi procedere
all'installazione della propria distribuzione.
IMPORTANTE
ESEGUIRE SEMPRE UNA COPIA DEI DATI. In caso di un problema o una
errata operazione e FACILISSIMO perdere il contenuto del proprio disco rigido.
13/11/17 Ercole Palmeri 24
Dispositivi Device
●
In Linux (come in Unix) i dispositivi sono rappresentati da
file contenuti all'interno della cartella edev.
●
In particolare i dischi rigidi di tipo IDE vengono indicati con:
– edevehda per il primo disco presente sul primo controller
IDE
– edevehdb per il secondo disco IDE e cosi via.....
●
Qualora il disco fosse con architettura SCSI o SATA
verrebbe identificato con edevesda. Allo stesso modo le
partizioni presenti nel disco edevesda vengono indicate
con: edevesda1, edevesda2, ecc..
13/11/17 Ercole Palmeri 25
Dispositivi Mount
●
Le partizioni per essere visibili devono essere montate
all'interno di una directory sotto e (root).
●
Per ognuna va indicato il relativo punto di mount:
– edevehda1=> ehome
– edevesda2=> e
13/11/17 Ercole Palmeri 26
Boot Loader
Il boot loader effettua il caricamento del sistema operativo (come ad
esempio il NTLDR in Windows). I boot loader piu diffusi sono LILO
(LInux LOader) e GRUB, quest'ultimo sta progressivamente
sostituendo LILO poiché essendo nato successivamente, ha
migliorato alcune funzionalita e superato alcuni limiti di LILO.
Boot Manager
LILO o GRUB non si limitano SOLO al caricamento di Linux, ma
sono a tutti gli effetti dei veri e propri BOOT MANAGER.
Questo vuol dire che possono eseguire il caricamento di altri sistemi
operativi (windows ad esempio) presenti sul disco rigido, dando
all'utente in fase di boot la possibilita di scegliere quale usare.
13/11/17 Ercole Palmeri 27
Boot Loader - Installazione
Durante l'installazione verra chiesto se installare il boot loader nel
Master Boot Record (MBR) o all'interno di una partizione Linux
(ext2 o ext3).
Normalmente si installa nel MBR quando Linux e il solo sistema
operativo o si vuole usare il boot loader anche come come boot
manager.
Utilizzando un boot manager differente l'installazione VA
ESEGUITA all'interno della partizione principale di Linux e (root).
L'installazione del boot loader va eseguita con molta cura, un
errore puo causare l'impossibilita di avviare il/i sistema/i
operativo/i presenti su disco rigido.
13/11/17 Ercole Palmeri 28
Installazione e pacchetti
In genere ogni distribuzione permette di scegliere il tipo di installazione che si vuol fare
proponendo tra 3 tipologie:
● Desktop – Per un utilizzo personale (equivalente a Windows XP/Vista)
● Server
● Uffcio – Con programmi specifci per offce automation
Package Manager (PM)
● L'utilizzo dei Package Manager permette di installare, aggiornare, verifcare o
rimuovere i programmi con molta facilità.
● I programmi vengono raccolti all'interno di un singolo fle che contiene anche le
istruzioni per l'installazione e la disinstallazione necessarie al Package Manager.
13/11/17 Ercole Palmeri 29
Installazione e pacchetti
I Package Manager esistenti sono:
● rpm nato con le distribuzioni Red Hat (Red Hat Package Manager) è utilizzato oggi
da diverse distribuzioni. I fle pacchettizzati hanno come estensione .rpm.
● dpkg creato da Debian e utilizzato dalle distribuzioni da essa derivate, utilizza un
formato differente con estensione .deb.
E' stato il primo ad avere uno strumento per la soluzione delle dipendenze chiamato apt
(Advanced Package Tool)
Altri PM che riconoscono le dipendenze tra i pacchetti sono (su base rpm):
● YUM (Yellow dog Updater Modifed) utilizzato da Fedora
● YaSt (Yet Another Setup Tool) utilizzato da SUSE
● urpmi utilizzato da Mandriva
13/11/17 Ercole Palmeri 30
Installazione e Utenti
In ambienti Unix e quindi anche su Linux esistono differenze fra i vari utenti, defnite dai
permessi e dall'acceso ai fle e comandi che un'utente può lanciare.
E' convenzione che i semplici utenti possono scrivere, leggere e modifcare fle solo
all'interno del loro ambiente (home) e lanciare semplici comandi che non infuiscono sulla
confgurazione del sistema.
Per poter accedere completamente alle risorse del sistema bisogna accedere al sistema
come superuser ovvero come utente root.
In fase di installazione di una macchina Linux si consiglia di scegliere una password di
root piuttosto complicata (ma ricordabile!) e di creare immediatamente un normale utente
con il quale operare per tutte le attività di tipo NON AMMINISTRATIVO.
13/11/17 Ercole Palmeri 31
Installazione e Utenti
L'utente root e l'amministratore del sistema con tutti i poteri che comporta
questo ruolo, quindi e molto importante che l'accesso a root sia limitato
solo al reale amministratore di sistema (sysadm) E PER IL TEMPO
STRETTAMENTE NECESSARIO.
L'utente root ha poteri assoluti sul sistema:
●
Aggiungere, Eliminare e modificare account (altri utenti)
●
Installare e configurare servizi
●
Accesso completo (lettura e scrittura) di tutti i file presenti nel
filesystem Aggiungere e Modificare il Filesystem
●
Distruggere tutto con un solo comando
IL POTERE DI ROOT SUL SISTEMA E ASSOLUTO
13/11/17 Ercole Palmeri 32
Filesystem
13/11/17 Ercole Palmeri 33
Filesystem secondo Wikipedia
●
Un file system (abbreviazione: FS), in informatica, indica informalmente un
meccanismo con il quale i file sono posizionati e organizzati o su un dispositivo
di archiviazione o su una memoria di massa, come un disco rigido o un CD-
ROM e, in casi eccezionali, anche sulla RAM.
●
Piu formalmente, un file system e l'insieme dei tipi di dati astratti necessari per
la memorizzazione (scrittura), l'organizzazione gerarchica, la manipolazione, la
navigazione, l'accesso e la lettura dei dati. Di fatto, alcuni file system (come
l'NFS) non interagiscono direttamente con i dispositivi di archiviazione.
●
I file system possono essere rappresentati sia graficamente tramite file browser
sia testualmente tramite shell testuale. Nella rappresentazione grafica (GUI) e
generalmente utilizzata la metafora delle cartelle che contengono documenti (i
file) ed altre sottocartelle.
13/11/17 Ercole Palmeri 34
Filesystem Linux
●
Un unico albero con radice e («» vs. «e»)
●
Unix estende molto il concetto di filesystem
– file e cartelle
– collegamenti (hardesoft) ad altri punti, cioe link a
directory o device
– device (a caratteri e a blocchi)
– mountpoint (i.e., altri filesystem)
– informazioni sul sistema (hw e sw)
– comunicazione fra processi
13/11/17 Ercole Palmeri 35
Filesystem Linux
/usr/giuliano/documenti/meeting.txt
path Nome file
13/11/17 Ercole Palmeri 36
Tipi di percorso
●
Percorso assoluto
– Absolute path
– A partire dalla radice
●
eusregiulianoedocumentiemeeting.txt
●
Percorso relativo
– Relative path
– A partire dal punto corrente
●
.edocumentiemeeting.txt
●
.emeeting.txt
13/11/17 Ercole Palmeri 37
Standard Filesystem Linux
●
e
– Dove inizia l’intero albero
●
ebin
– Eseguibili necessari in modalita single user e per
portare su il sistema o per ripararlo
●
esbin
– Eseguibili per l’amministratore
13/11/17 Ercole Palmeri 38
Standard Filesystem Linux
●
eetc
– file di configurazione locali alla macchina
– contiene svariate sotto cartelle
– talvolta detta il «sistema nervoso» del sistema
●
eetceskel
– quando un nuovo utente viene creato, la sua home
viene popolata copiando i file di questa cartella
13/11/17 Ercole Palmeri 39
Standard Filesystem Linux
●
elib
– librerie condivise emnt
– mount point usato per filesystem montati
temporaneamente
●
etmp
– file temporanei che possono essere cancellati senza
preavviso
13/11/17 Ercole Palmeri 40
Standard Filesystem Linux
● / boot
– File necessari durante il processo di boot
– spesso un flesystem diverso
● / home
● cartella personali degli utenti
● / r oot
● la cartella personale dell’amministratore
● spesso su un flesystem diverso da /home
13/11/17 Ercole Palmeri 41
Filesystem Linux: link
13/11/17 Ercole Palmeri 42
Filesystem Linux: link
13/11/17 Ercole Palmeri 43
Filesystem Linux: link
13/11/17 Ercole Palmeri 44
Filesystem Linux
Ogni fle specifca
● L’utente che lo possiede (owner)
● Il nome di un gruppo
● La dimensione
● Altre informazioni
13/11/17 Ercole Palmeri 45
Filesystem Linux
Ogni fle tiene traccia dell’ultimo
istante
● in cui è stato letto
● in cui è stato scritto
● in cui ha mutato stato
13/11/17 Ercole Palmeri 46
Filesystem Linux
In un sistema Unix i fle vengono discriminati utilizzando
diverse informazioni:
● il «tipo»:
– Testo
– Directory
– Mount, link …
● gli «attributi»
● il primo carattere
● l’estensione
● il suffsso (l’ultimo carattere)
● il contenuto
13/11/17 Ercole Palmeri 47
Filesystem Linux: Tipi di fle
● Normali («File regolari»)
● Cartella
● Collegamenti («Symbolic link»)
● Named pipe
● Socket
● Device (blocchi/carattere)
13/11/17 Ercole Palmeri 48
Filesystem: attributi
●
Alcune operazioni possono essere permesseevietate:
– lettura (read)
– scritturaemodifica (write)
– esecuzione (execute)
●
Dai seguenti utenti:
– Chi lo possiede (user)
– Chi fa parte del gruppo del file (group)
– Tutti gli utenti del sistema (other)
13/11/17 Ercole Palmeri 49
Primo carattere
●
Il primo carattere fa parte del nome del file
– nessun significato per il sistema operativo
●
I file che iniziano con un punto sono file nascosti, ovvero
non vengono mostrati normalmente
●
File speciali
– «.» rappresenta la cartella corrente
– «..» rappresenta la cartella padre
13/11/17 Ercole Palmeri 50
Estensione/Suffsso
●
L’estensione ed il suffisso fanno parte del nome del file
– nessun significato per il sistema operativo
●
Convenzione
– estensioni standard (e.g., .c .o .h .gz)
– suffissi standard (~)
– utilizzati da alcuni applicativi (e.g., less)
13/11/17 Ercole Palmeri 51
Contenuto
● Il fle viene esaminato alla ricerca di specifche
sequenze o schemi (inteso come contenuto del
fle)
● Esempi
– eseguibili windows
– immagini jpg, png
● Utilizzato da alcuni applicativi (e.g., shell
grafche)
13/11/17 Ercole Palmeri 52
Permessi
● Linux è un sistema multiutente. Per ogni fle ci sono 4 categorie di utenti:
– Root: l’amministratore del sistema
– Owner: il proprietario del fle
– Group: il gruppo di utenti
– World: il «resto del mondo»
● Ogni utente può leggere, modifcare ed eseguire (nel caso di programmi) i fle in
base ai permessi che ha su di esso;
● Il blocco di caratteri «rw-r--r--» (o una qualsiasi altra combinazione di r, x, w o -)
rappresenta i permessi di accesso ai fle. I primi 3 (rw-) sono riferiti all’owner. Il
secondo blocco di 3 caratteri (r--) è riferito al group e l’ultimo blocco (r--) è riferito
alla categoria world;
● La prima posizione di ogni blocco rappresenta il permesso di lettura (r) del fle, la
seconda il permesso di scrittura (w) sul fle e la terza il permesso di esecuzione
(x) del fle (se si tratta per esempio di un programma). Un trattino (-) in una
qualsiasi posizione indica l’assenza del permesso corrispondente;
● per accedere a una directory, bisogna avere il permesso di esecuzione su di
essa.
13/11/17 Ercole Palmeri 53
Shell
●
Bourne shell (sh)
– L’originale shell scritta da Steve Bourne dei Bell Labs
– Disponibile su tutti i sistemi UNIX
●
C shell (csh)
– Scritta a Berkley (California), include alcuni costrutti
simili al linguaggio C
●
TC Shell (tcsh)
– Shell compatibile con C shell a cui aggiunge alcune
funzionalita (e.g., editing, completamento)
13/11/17 Ercole Palmeri 54
Shell
●
Korn shell (ksh)
– Di David Korn dei Bell Labs
– C e TC shells insieme piu un linguaggio simile
all’originale Bourne shell
●
Oggi standard di quasi tutti i sistemi Linux
13/11/17 Ercole Palmeri 55
Shell
● Bourne Again Shell (bash)
– Shell di pubblico dominio della FSF per GNU
– Cerca di implementare completamente lo standard
IEEE Posix Shell and Tools specifcation
– Unisce le caratteristiche della C shell e della Korn
shell
– Il linguaggio di programmazione è compatibile con
la Bourne shell
13/11/17 Ercole Palmeri 56
Standard Filesystem
●
e
– Dove inizia l’intero albero
●
ebin
– Eseguibili necessari in modalita single user e per portare su il sistema
o per ripararlo
●
esbin
– Eseguibili per l’amministratore
●
eetc
– file di configurazione locali alla macchinacontiene svariate sotto
cartelletalvolta detta il «sistema nervoso» del sistema
●
eetceskel
– quando un nuovo utente viene creato, la sua home viene popolata
copiando i file di questa cartella
13/11/17 Ercole Palmeri 57
Standard Filesystem
●
/lib
– librerie condivise
●
/mnt
– mount point usato per filesystem montati temporaneamente
●
/tmp
– file temporanei che possono essere cancellati senza preavviso
●
/boot
– File necessari durante il processo di boot – spesso un filesystem diverso
●
/home
– cartella personali degli utenti
13/11/17 Ercole Palmeri 58
Standard Filesystem
●
/root
– la cartella personale dell’amministratore
– spesso su un filesystem diverso da ehome
●
/mnt
– mount point usato per filesystem montati temporaneamente
●
/media
– mount point usato abitualmente (e automaticamente) per dischi rimovibili (CD, USB)
●
/usr
– dati condivisi, non essenziali, e a sola lettura
●
/opt
– altro software (non incluso nella distro standard)
●
/var
– dati variabili non sempre condivisibili
13/11/17 Ercole Palmeri 59
Standard Filesystem
●
/srv
– dati dei servizi disponibili sul sistema specifico
●
/tmp
– file temporanei(solitamente) svuotata ad ogni reboot
●
/var/tmp
– file temporaneila cartella potrebbe essere su un filesystem diverso
(e quindi non essere disponibile durante il boot)
– (solitamente) non svuotata al reboot
●
/dev
– File speciali o device, i quali fanno riferimento a dispositivi fisici
13/11/17 Ercole Palmeri 60
Standard Filesystem
●
/proc
– mount point per il filesystem proc, il quale fornisce
informazioni sui processi in esecuzione e sul kernel
●
/sys
– Informazioni aggiornate in tempo reale sui device del
sistema
●
/lost+found
– dati recuperati dall’ultimo check del disco –
presente su ogni filesystem standard
13/11/17 Ercole Palmeri 61
Concetti Linux: stdin, stdout e stderr
●
Quando un programma scrive qualcosa sullo schermo, sta usando una cosa
che si chiama standard output, abbreviato stdinc
●
stdin e cio che viene usato per comunicare con i programmi e standard inputc
●
Per esempio, il comando ls stampa su stdout il contenuto della directory
specificata o quella corrente, che e normalmente ``connesso'' al vostro
terminale. Un comando interattivo, come la shell, bash, legge i vostri comandi
dallo standard inputc
●
E anche possibile per un programma scrivere nello standard error, dato che e
molto semplice dirottare lo standard output altrove rispetto al terminale. Lo
standard error, stderr, e quasi sempre connesso al terminale, cosi una
persona puo leggere i messaggi d'errorec
●
Stdin e identificato con il numero 1: cat 1>pippo.txt, stdin si interrompe con
Ctrl-Z
●
Stdout e identificato con il numero 2: cat pippo.txt>2
13/11/17 Ercole Palmeri 62
Concetti Linux: redirezione stdin/stdout/stderr
●
Una caratteristica di linux e la capacita di redirigere l'output.
Questo vi permette, invece di vedere i risultati di un comando
sullo schermo, di registrarli in un file o di mandarli direttamente
alla stampante. Per esempio, per redirigere l'output del
comando ls /usr/bin, possiamo mettere il segno > alla fine della
linea e diremo in quale file vogliamo che sia messo l'outputc
●
Un programma o un comando, invece di leggere dalla tastiera,
puo legge da un file. La redirezione dell'input e simile alla
redirezione dell'output, quindi il carattere speciale per la
redirezione dell'input e <. Anche in questo caso deve essere
messo dopo il comando da eseguirec
●
La redirezione dell'input e utile nel caso in cui si ha un file di dati
e un comando che si aspetta dell'input dallo standard input.
13/11/17 Ercole Palmeri 63
Comandi di base: Pipelines e simili
●
comando > filename: Redireziona l'output di comando verso il
filename. Il file viene cancellato e sostituito dal nuovo testo.
●
comando >> filename: Redireziona l'output di comando verso il
filename. Il testo viene appeso in coda al file.
●
comando < filename: Usa il filename come input di comando.
●
comando < filename-in > filename-out
●
comando < filename-in >> filename-out: Combinazione delle
precedenti.
●
comando1 | comando2: pipeline. L'output di comando1 verra usato
come input di comando2. I due programi sono avviati in parallelo.
●
comando1 && comando2: esegue i due comandi uno dopo l'altro.
●
comando &: esegue il comando in background. E come usare bg.
13/11/17 Ercole Palmeri 64
Comandi di base: Lavorare con file e directory
●
cd: cambia la directory corrente
– cd <directory in cui spostarsi>
●
ls: mostra il contenuto di una directory
– ls <nome directory da elencare>
●
cp: copia file e directory
– cp <sorgente> <destinazione>
●
mv: muove o rinomina un file o una directory
●
rm: cancella file e directory
●
mkdir: crea una directory
13/11/17 Ercole Palmeri 65
Comandi di base: Lavorare con file e directory
●
ln: crea link a file e directory.
– l’istruzione ln crea una nuova voce di directory (file collegato) che ha
le stesse caratteristiche del file originalec
– Permette di avere piu copie di un file senza utilizzare lo spazio per
copie multiple, la copia e costituita da un collegamento all’originalec
– Ci sono due tipi di link, e la modalita fa la differenza:
●
Hard: ln per default crea un link di tipo hard, caratterizzato dal fatto
che e indistinguibile dall’oggetto originale. Qualsiasi modifica di un
file e effettivamente indipendente del nome utilizzato per fare
riferimento al file.
●
Simbolico: contiene il nome del file a cui e collegato. Il file di
riferimento viene utilizzato quando viene eseguita un'operazione
sul collegamento.
– Ls -s file_sorgente file_target (file_target puo essere directory)
13/11/17 Ercole Palmeri 66
Comandi di base: Lavorare con file e directory
●
Il comando ls mostra i symbolic link usando una l come primo carattere degli attributi del file
●
Rimuovendo un link il file originale non viene rimosso
●
Rimuovendo un file gli eventuali link divengono inconsistenti
– ls -l
●
lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link1 -> original
●
lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2 -> original
●
-rw-r--r-- 1 scarpazz 5 Jul 14 14:37 original
– rm link1
– ls -l
●
lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2 -> original
●
-rw-r--r-- 1 scarpazz 5 Jul 14 14:37 original
– rm original
– ls -l
●
lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2 -> original
– cat link2
●
cat: cannot open link2
13/11/17 Ercole Palmeri 67
Comandi di base: Lavorare con file e directory
●
Il comando ls mostra gli hard link incrementando link count, nella seconda colonna
●
Rimuovendo un link il file originale non viene rimosso
●
Il file non viene rimosso fino a che tutti i link non sono stati rimossi
– ls -l
●
lrwxrwxrwx 3 scarpazz 8 Jul 14 14:38 link1
●
lrwxrwxrwx 3 scarpazz 8 Jul 14 14:38 link2
●
-rw-r--r-- 3 scarpazz 5 Jul 14 14:37 original
– rm link1
– ls -l
●
lrwxrwxrwx 2 scarpazz 8 Jul 14 14:38 link2
●
-rw-r--r-- 2 scarpazz 5 Jul 14 14:37 original
– rm original
– ls -l
●
lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2
– cat link2
– This is the content of the file...
13/11/17 Ercole Palmeri 68
Comandi di base: Lavorare con file e directory
●
pwd: mostra la directory corrente.
●
chmod: comando che modifica i permessi (lettura, scrittura, esecuzione), a un file o a un
gruppo di files. Il comando si esprime con un numero di 3 cifre (in ‘ottale’) e il file o gruppi di
file. Il numero di 3 cifre esprime i tipi di permessi secondo la logica proprietarioegruppoetutti gli
altri. Le tre cifre esprimono quanto segue
– 7 corrisponde a rwx
– 6 corrisponde a rw
– 5 corrisponde a rx
– 4 corrisponde a r
– 3 corrisponde a wx
– 2 corrisponde a w
– 1 corrisponde a x
– 0 negato ogni accesso
●
chown: cambia il proprietario di un file.
●
cat: mostra il contenuto di un file.
●
find: cerca un file tra le directory.
13/11/17 Ercole Palmeri 69
Comandi di base: esercitazione
●
Visualizzare la directory corrente di lavoro nel file system
●
Visualizzare il contenuto della directory corrente
●
Creare una directory denominata cognome_nome
●
Spostarsi nella directory al punto cognome_nome
●
Creare un file chiamato CIAO.txt da stdin
●
Visualizzare a video il contenuto del file CIAO.txt
●
Rinominare il file CIAO.txt con un nome a scelta
●
Spostarsi nella directory superiore
●
Creare una directory Cognome
13/11/17 Ercole Palmeri 70
Comandi di base: esercitazione
●
Visualizzare la directory corrente di lavoro nel file system
– pwd
●
Visualizzare il contenuto della directory corrente
– ls
●
Creare una directory denominata cognome_nome
– mkdir cognome_nome
●
Spostarsi nella directory al punto cognome_nome
– cd cognome_nome
●
Creare un file chiamato CIAO.txt da stdin
– cat 1>CIAO.txt
●
Visualizzare a video il contenuto del file CIAO.txt
– cat CIAO.txt
●
Rinominare il file CIAO.txt con un nome a scelta
– mv CIAO.txt nome.txt
●
Spostarsi nella directory superiore
– Cd ..
●
Creare una directory Cognome
– mkdir Eserc_Cognome
13/11/17 Ercole Palmeri 71
Riferimento manuale inlinea
●
Linux fornisce due diversi sistemi di help relativi ai
comandi: man e info
– man cmd
●
cmd Comando di cui mostrare il manuale
– info cmd
●
cmd Comando di cui mostrare il manuale
●
storicamente, info e arrivato dopo man e presenta
funzionalita piu avanzate
13/11/17 Ercole Palmeri 72
Comandi di base: editor vi
●
L’editor "vi" viene lanciato con il seguente comando:
– vi [-r] [+comando] [file1 [file2 ... filen]]
●
l’opzione -r puo essereutilizzata dopo un crash del
sistema (per recuperare le modifiche non
memorizzate relative al file)c
●
+comando apre la sessione dell'editor eseguendo il
"comando" (sono significativi solamente i comandi di
editor di linea)c
●
se si specificano piu nomi di file da editare, 'vi' entra
in editing sul primo file indicato, e su richiesta
(comando ':n') passera in ordine ai successivi.
13/11/17 Ercole Palmeri 73
Comandi di base: editor vi
●
entrando in "vi", compariranno sullo schermo le prime 24 righe del file (con "~" come
primo carattere sulle righe vuote), e ci si trovera in COMMAND MODE. Quest'ultimo e
uno dei tre possibili stati dell'editor "vi":
– COMMAND MODE: Il cursore e posizionato sul testo, la tastiera e utilizzabile solo
per richiedere l'esecuzione di comandi, e non per introdurre testo. I caratteri digitati
non vengono visualizzatic
– INPUT MODE: Tutti i caratteri digitati vengono visualizzati ed inseriti nel testo. Si
passa in input mode ad ogni richiesta di inserimento di testoc
– DIRECTIVE MODE: Ci si trova (tramite ":") posizionati con il cursore nella linea
direttive (l'ultima linea del video) e si possono richiedere a "vi" tutti i comandi per il
controllo del filec
●
I passaggi di stato avvengono con i seguenti caratteri:
– DIRECTIVE MODE -----> COMMAND MODE <RET>
– COMMAND MODE -----> INPUT MODE oORia
– INPUT MODE -----> COMMAND MODE <ESC>
– COMMAND MODE -----> DIRECTIVE MODE :e?
13/11/17 Ercole Palmeri 74
Vi: particolarità
●
All'interno del "vi" e possibile lanciare comandi appartenenti alla shell da cui e stato
richiamato il "vi" stesso. Il comando e eseguibile in directive mode:
– :!comando
●
Per quanto riguarda le cancellazioni:
– 'vi' ha un singolo buffer, nel quale viene salvata l'ultima porzione di testo cancellata,
nove buffer numerati (1 2 ... 9) ed un insieme di buffer individuati dalle lettere
dell'alfabeto (a b ... z) a disposizione dell'utente.
– I buffer, in caso di editing di piu file in successione, non vengono cancellati nel passare
da un file all'altro, permettendo cosi spostamenti di parte di testo tra file diversi.
– I buffer possono anche essere utilizzati per cancellazioni e ripristini o per spostamenti
di parti di testo all'interno di uno stesso file.
●
E importante ricordare che per il 'vi':
– una parola e una qualsiasi sequenza di caratteri chiusa da uno spazioc
– una frase di testo e una qualsiasi sequenza di caratteri chiusa da '.', '!' oppure '?'
seguiti da newline o da due spazic
– un paragrafo e invece delimitato da una linea vuota.
13/11/17 Ercole Palmeri 75
Vi: spostamenti di base (COMMAND MODE)
●
Tutti i comandi di spostamento sono eseguibili in COMMAND MODE.
– h 1 spazio a sinistra
– l 1 spazio a destra
– k 1 linea sopra
– j 1 linea sotto
– (in sostituzione di questi quattro caratteri, si possono anche utilizzare le
frecce per spostarsi nelle diverse direzioni)
– G posizionamento sull'ultima linea del testo
– #G posizionamento sulla linea identificata da "#" (dove #=numero)
●
Esempi: 3G 5G 175G
– :# stesso funzionamento di #G (ma in directive mode)
●
#movec ripete "move" "#" volte (dove move=qualsiasi comando di spostamento)
– Ad esempio “3h” sposta il cursore a sinistra di 3 caratteri
13/11/17 Ercole Palmeri 76
Vi: OPERAZIONI SUL VIDEO
●
^Gmostra lo stato del file corrente (informazioni varie)
●
:= mostra il numero di linee del file
●
:.= mostra il numero della linea corrente
●
^L refresh del video
●
^D si posiziona mezza pagina avanti (in INSERT MODE shifta indietro di un TAB)
●
^U si posiziona mezza pagina indietro
●
^F si posiziona sulla pagina successiva
●
^B si posiziona sulla pagina precedente
– i tasti di controllo delle pagine, ^D-^U-^F-^B, possono anche essere utilizzati con un opzionale moltiplicatore, come ad
esempio: 5^F 5 pagine avanti)
●
^E sposta la schermata avanti senza spostare il cursore
●
^Y sposta la schermata indietro senza spostare il cursore
●
H si posiziona all'inizio della schermata
●
M si posiziona al centro della schermata
●
L si posiziona al fondo della schermata
●
<< shifta la linea corrente a sinistra
●
<L shifta tutte le linee, da quella corrente alla fine dello schermo, verso sinistra
●
>> shifta la linea corrente a destra (come TAB in INSERT MODE)
●
>L shifta tutte le linee, da quella corrente alla fine dello schermo, verso destra
13/11/17 Ercole Palmeri 77
Vi: SPOSTAMENTI SU LINEA
●
$ si posiziona alla fine della linea
●
^ si posiziona al primo carattere non-blank della linea
●
0 si posiziona alla colonna zero (inizio linea)
●
#| si posiziona ad un'esatta colonna sulla linea (colonna "#")
– Esempi: 5| 1| 9|
●
w si posiziona all'inizio della parola successiva (una parola e delimitata da un
carattere non alfanumerico)
●
e si posiziona alla fine della parola successiva
●
b torna all'inizio della parola precedente
●
W,E,B stesso funzionamento di w,e,b (parola delimitata da spazio)
●
+ posizionamento al primo carattere non-blank della linea successiva (come
RETURN)
●
- posizionamento al primo carattere non-blank della linea precedente
13/11/17 Ercole Palmeri 78
Vi: EDIT
●
ESC fa uscire dall'INPUT MODE, per terminare quindi l'inserimento e tutte le modifiche in
generale (se c'e qualcosa che non va, funziona anche ^C)
●
. ripete l'ultimo cambiamento effettuato (o meglio, l'ultimo comando dato)
●
o OPEN: inserisce una linea sotto quella corrente
●
O OPEN: inserisce una linea sopra quella corrente
●
i INSERT: inserisce caratteri a sinistra del cursore
●
I INSERT: inserisce caratteri all'inizio della linea
●
a APPEND: aggiunge caratteri a destra del cursore
●
A APPEND: aggiunge caratteri alla fine della linea
●
J JOIN: concatena la linea successiva alla corrente
●
#s SUBSTITUTE: sostituisce per "#" caratteri, di default 1 carattere
●
#S SUBSTITUTE: sostituisce per "#" intere linee, di default 1 linea
●
#r REPLACE: sostituisce "#" caratteri, di default 1 carattere (non e necessario premere ESC)c
con "rcarattere" (dove 'carattere' e un qualsiasi carattere), il carattere di posizionamento del
cursore viene sostituito con quello specificato dopo 'r'
●
R REPLACE: entra in modalita di sovrascrittura
13/11/17 Ercole Palmeri 79
Vi: EDIT
●
c[x] CHANGE: cambia fino a dove specificato con "x"
– Esempio: cw sostituisce la parola corrente
●
cc CHANGE: cambia l'intera linea
●
C CHANGE: cambia fino alla fine della linea
●
aI comandi EDIT sin qui descritti e possibile anteporre un numero , e cio comportera
la duplicazione della funzione desiderata tante volte quanto specificato dal numero. I
comandi che seguono non hanno questa caratteristica. Non e possibile specificare il
numero.
●
^D elimina un rientro (TAB)
●
^^D elimina tutti i rientri per la linea corrente (digitare il carattere '^' e poi un CTRL-D)
●
^W cancella l'ultima parola introdotta
●
^U cancella l'ultima linea introdotta
●
^H corrisponde a backspace, cioe torna indietro di un carattere
●
^V permette di inserire nel testo il carattere ESC
13/11/17 Ercole Palmeri 80
Vi: ricerche
●
f char: cerca la successiva occorrenza di 'char' sulla linea
●
t char: si sposta fino alla successiva occorrenza di 'char' sulla linea
●
F char: cerca la precedente occorrenza di 'char' sulla linea
●
T char: si sposta fino alla precedente occorrenza di 'char' sulla linea
●
c ripete l'ultimo f, t, F o T eseguito
●
, capovolge l'ordine dell'ultimo f, t, F o T eseguito
●
%: mostra il confronto con (), [] o {}
●
n: NEXT: ripete l'ultimo comando e o ?
●
N: NEXT: capovolge l'ordine dell'ultimo comando e o ?
●
estring: trova 'string' cercando in avantic in aggiunta,
●
estringecestr2e: spostera il cursore sulla prima 'str2' dopo 'string'
●
?string: trova 'string' cercando a ritrosoc l'opzione "c"
●
?string?: ha lo stesso funzionamento come sopra
●
e, ?: utilizza la stringa usata per la ricerca precedente
13/11/17 Ercole Palmeri 81
Vi: UNDO & PASTE
●
u: annulla l'ultima modifica
●
U: annulla tutte le modifiche fatte alla linea corrente fino a quando il cursore
non e stato spostato dalla linea
●
P: incolla il contenuto del buffer prima del cursore
●
p: incolla il contenuto del buffer dopo il cursore
●
"<char>PASTE: incolla il buffer richiamato (char=a-z), utilizzando uno dei
comandi sopraelencati
●
"#PASTE: incolla il buffer numerato (#=1-9) utilizzando uno dei comandi
sopraelencati
●
"[1-9]PASTE utilizza un comando PASTE per incollare uno dei buffer
numeratic i buffer numerati immagazzinano le ultime 9 cancellazioni
effettuate, con il metodo "first in last out". Solitamente si utilizzano per
riportare sul file porzioni testo precedentemente cancellate
– Esempi: "1P "2p
13/11/17 Ercole Palmeri 82
Vi: EXIT
●
ZZ: aggiorna sempre il file ed esce (da COMMAND MODE)
●
:[#,#]w[!] [filename] ---> WRITE: scrive senza uscire (nel file
"filename", se viene specificato, altrimenti nel file corrente)c
vengono utilizzati "#,#" per specificare gli indirizzi 'from' e 'to' (daea),
e "!" (bang) per forzare la scrittura (cioe per riscrivere)
– Esempi:
●
:1,5 w abcd scrive le linee da 1 a 5 nel file abcd
●
:efrome,etoe w efg scrive da 'from' a 'to' nel file efg
●
:efrome,+5 w hij scrive da 'from' a 5 linee dopo nel file hij
●
:x WRITE and QUIT: aggiorna, se necessario, ed esce
●
:wq WRITE and QUIT: aggiorna ed esce
●
:q[!] QUIT: esce senza salvare le modifiche
13/11/17 Ercole Palmeri 83
Vi: Esercitazione
Preparare un testo con l’editor vi
che contiene un elenco
dei principali comandi Linux che ricordi
con una breve descrizione della funzionalita.
13/11/17 Ercole Palmeri 84
I processi
●
Un programma descrive le operazioni che devono essere svolte dal calcolatore per
mezzo di istruzioni di alto livello (sorgente) o di basso livello (codice macchina)
●
Un processo rappresenta una esecuzione del codice di un programma
●
Un processo e costituito da:
– Una immagine del programma, cioe del suo codice macchina
– Un descrittore di processo e organizzato schematicamente cosi:
●
Puntatore
●
Stato del processo
●
Process ID
●
Contatore di programma
●
Contenuto dei registri del processore
●
Memoria associata al processo
●
File descriptor dei file aperti
●
...
13/11/17 Ercole Palmeri 85
Esecuzione di un processo
●
Un processo viene sempre creato da un altro processo
– Il processo creatore si chiama processo padre o parent process
– Il processo creato si chiama processo figlio o child process
●
Nei sistemi operativi unixlike tutti i processi discendono dal processo
init, che inizializza il sistema
●
I processi possono essere in esecuzione in due modalita:
– Foreground Il processo figlio eredita e ritiene tutte le risorse del
padre. Il padre e sospeso in attesa della terminazione del figlio
– Backgroud Il processo figlio eredita tutte le risorse del padre. Il
processo padre rimane in esecuzione. A questo punto e lo scheduler
ad assegnare le risorse ai due processi.
●
L’utente puo specificare eeo modificare la modalita di esecuzione di un
processo.
13/11/17 Ercole Palmeri 86
Operazioni sui processi
●
Creazione
– Un processo viene creato in foreground fornendo ad una shell il nome del
programma corrispondente
– Per creare un processo in background si usa il carattere & alla fine della linea
di comando della shell
●
Terminazione
– Un processo in foreground viene terminato premendo opportune combinazioni
di tasti, tipicamente CTRL-C
– Un processo in background viene terminato inviandogli un opportuno segnale
(SIGKILL, SIGABRT) tramite il comando kill
●
Sospensione
– Un processo in foreground viene sospeso premendo opportune combinazioni
di tasti, tipicamente CTRL-Z
– Un processo in background viene sospeso inviandogli un opportuno segnale
(SIGSTOP) tramite i comandi kill e stop
13/11/17 Ercole Palmeri 87
Operazioni sui processi
●
Continuazione
– Si puo forzare la continuazione di un processo sospeso utilizzando i comandi fg e bg
– E anche possibile inviare al processo sospeso un opportuno segnale (SIGCONT) tramite il comando
kill
●
kill -l
●
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8)
SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15)
SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28)
SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36)
SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41)
SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46)
SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51)
SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56)
SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61)
SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
●
Duplicazione
– Un processo puo essere duplicato solo attraverso chiamate a funzioni di sistema operativo
●
Analisi
– E possibile visualizzare alcune informazioni relative ai processi utilizzando i comandi ps, pstree e jobs
13/11/17 Ercole Palmeri 88
Operazioni sui processi
●
ps [a][u][x]
– Mostra le informazioni piu utili riguardanti i processi in esecuzione
●
a Mostra tutte le informazioni
●
u Mostra il nome del proprietario dei processi
●
x Mostra i processi di tutti gli utenti, non solo i propri
– ps aux
●
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
●
root 1 0.3 0.3 1376 476 ? S 10:13 0:04 init
●
root 2 0.0 0.0 0 0 ? SW 10:13 0:00 [keventd]
●
…
●
VSZ - Virtual Set Size
– La VSZ e una dimensione di memoria assegnata a un processo (programma) durante
l'esecuzione iniziale. La memoria Virtual Set Size e semplicemente una quantita di memoria a
disposizione per l’esecuzione del processo.
●
RSS - Resident Set Size
– Contrariamente a VSZ, RSS e una memoria attualmente utilizzata da un processo. Questo e
un numero effettivo in kilobyte di quanto RAM utilizza il processo corrente.
13/11/17 Ercole Palmeri 89
Operazioni sui processi
●
Jobs
– Mostra la lista dei processi sospesi, figli della shell corrente
– Ogni processo e individuato da un identificatore detto jobid
– Parametro -l Include nella lista anche il process id
●
fg [%jobid]
– Porta un processo in foreground
●
Senza argomenti porta in foreground il processo indicato con il simbolo ‘+’ nella lista
prodotta dal comando jobs
●
%jobid Porta in foreground il processo identificato dall’identificatore
●
jobid, secondo quanto mostrato dal comando jobs
●
bg [%jobid]
– Porta un processo in background
●
Senza argomenti porta in background il processo indicato con il simbolo ‘+’ nella lista
prodotta dal comando jobs
●
%jobid Porta in background il processo identificato dall’identificatore
●
jobid, secondo quanto mostrato dal comando jobs
13/11/17 Ercole Palmeri 90
Comandi di base: Filesystem e processi
●
df: mostra lo spazio libero sul disco fisso
– Esempio: df -h, visualizzare l'elenco delle partizioni con
tutte le informazioni nome, dimensione disponibile...
●
free: mostra lo stato della memoria.
●
pwd : mostra la directory corrente.
●
cat: mostra il contenuto di un file.
●
find : cerca un file tra le directory.
●
mount: monta un filesystem.
●
umount: disattiva un filesystem.
13/11/17 Ercole Palmeri 91
Mount in Red Hat
●
Ci sono 3 modi per eseguire il mount di un filesystem
– Mount
●
mount extmachine:emnteexport emntelocal
– eetcefstab
●
Per montare una parte NFS da un'altra macchina
potete anche aggiungere una linea al file eetcefstab
– Autofs
●
Il terzo metodo di montaggio di una parte NFS
prevede l'utilizzo di autofs.
●
Autofs usa il demone automount per gestire i mount
point montandoli in modo dinamico.
13/11/17 Ercole Palmeri 92
Mount in Red Hat: istruzione mount
●
Per montare un filesystem NFS che si trova su un'altra macchina,
si usa il seguente comando:
– mount extmachine:emnteexport emntelocal
●
Nella macchina locale deve esistere la directory mount point
(emntelocal, nell'esempio sopra citato).
●
In questo comando, extmachine corrisponde all'hostname del
fileserver NFS, emnteexport e il filesystem che extmachine sta
esportando e emntelocal e la directory della macchina locale dove si
vuole montare il filesystem.
●
Una volta eseguito il comando mount (e se abbiamo le
autorizzazioni da extmachine), possiamo digitare ls emntelocal per
ottenere un elenco dei file in emnteexport su extmachine.
●
Per smontare: unmount /mnt/local
13/11/17 Ercole Palmeri 93
Mount in Red Hat: /etc/fstab
●
Per montare una parte NFS da un'altra macchina, e possibile anche
aggiungere una linea nel file eetcefstab. La linea deve riportare:
– l'hostname del server NFS
– la directory che viene esportata
– la directory che deve contenere il filesystem.
– Per modificare il file eetcefstab e necessario essere collegati come
root.
●
Di seguito e riportata la linea da aggiungere a eetcefstab:
●
server:eusrelocalepub epub nfs rsize=8192,wsize=8192,timeo=14,intr
●
La macchina deve contenere il mount point epub. Una volta aggiunta
la linea nel file eetcefstab, e necessario digitare il comando mount
epub al prompt della shell per montare il mount point epub dal server.
13/11/17 Ercole Palmeri 94
Mount in Red Hat: autofs
●
autofs e un programma per montare automaticamente dischi in base alle necessita.
– Il montaggio avviene nel momento della richiesta di accesso
– e viene smontato dopo un periodo di inattivita.
●
Autofs consulta il file di configurazione master eetceauto.master per determinare quali mount point sono definiti.
Poi avvia un processo di automontaggio con i parametri per ogni mount point. Ogni linea del file di mappa master
definisce un mount point e un file di mappa separato che definisce il filesystem da montare sotto uno specifico
mount point.
– Per esempio, il file eetceauto.mnt definisce i mount point nella directory emntc cio viene definito nel file
eetceauto.master.
●
Ogni voce in auto.master ha tre campi. Il primo campo e il mount point. Il secondo campo indica la posizione del
file di mappa e il terzo campo, opzionale, puo contenere informazioni quali il valore di timeout.
– Per esempio, per montare la directory eproject della macchina remota mymachine.host.net sul mount point
emntemyproject della vostra macchina, aggiungete a auto.master la riga seguente:
●
emnt eetceauto.mnt --timeout 60
– e la linea seguente al file eetceauto.mnt:
●
myproject -rw,soft,intr,rsize=8192,wsize=8192 mymachine.host.net:eproject
●
Il primo campo contenuto in eetceauto.mnt indica il nome della sotto-directory emnt. Questa directory viene
creata in modo dinamico da automount. In realta la directory non dovrebbe esistere sulla macchina client. Il
secondo campo contiene opzioni di montaggio quali rw per leggere e scrivere accessi. Il terzo campo e la
posizione dell'NFS di esportazione e contiene l'hostname e la directory.
●
La directory emnt deve esistere nel filesystem locale. Questo non deve contenere sotto-directory di emnt.
13/11/17 Ercole Palmeri 95
Mount in Red Hat: autofs
●
Comandi Autofs
– Autofs e un servizio che puo essere avviato dal prompt
della shell digitando i comandi seguenti:
●
service autofs restart
– Per visualizzare i mount point attivi, digitate il seguente
comando al prompt della shell:
●
service autofs status
– Se modificate il file di configurazione eetceauto.master
mentre autofs e in esecuzione, dovete dire ai demoni
automount di ricaricare autofs digitando al prompt della
shell il comando seguente:
●
service autofs reload
13/11/17 Ercole Palmeri 96
Comandi di base: Lavorare con file e directory
●
Arch: visualizza l’architettura della macchina
●
cd: change directory
●
du: per conoscere lo spazio su disco occupato da…
– Esempio: du -sh M*, visualizzare lo spazio su disco
occupato dalle directory che iniziano con la lettera M. s
visualizza una riga per ogni elemento, h output in
formato leggibile
●
sort: visualizza i file ordinandoli
13/11/17 Ercole Palmeri 97
Esercitazione
Visualizzare la dimensione delle directory che
iniziano con la M,
ordinandoli per dimensione
(comando su di una unica riga)
13/11/17 Ercole Palmeri 98
Comandi di base
du -sh M* | sort -rn
r per invertire l’ordinamento
n per l’ordinamento numerico
13/11/17 Ercole Palmeri 99
Comandi di base
●
cp: copy files
– Esempio: cp ebootevmlinuz edevefd0
– Opzioni:
●
-b Esegue automaticamente una copia di backup di ogni file di destinazione esistente
●
-f Forza la sovrascrittura dei file, senza richiedere interventi da parte dell’utente
●
-i Attiva la modalita interattiva, che chiede conferma prima dell’eventuale sovrascrittura
di file di destinazione preesistentic il suffisso usato e il classico simbolo della tilde, ~
●
-p Mantiene, se possibile, gli attributi (permessi, ownership, etc.) del file
●
-r Permette di attivare la modalita ricorsiva, che permette la copia di directory
●
-v Attiva la modalita verbose, che visualizza in output quello che il sistema ha fatto in
seguito al nostro comando
●
mv: move files
– mv file_sorgente destinazione
– mv miofile etmp
●
rm: remove files
●
mkdir: make directory
13/11/17 Ercole Palmeri 100
Comandi di base: tar
tar <opzioni> <archivio> <file_eeo_directory_da_archiviare>
●
tar: tool in grado di creare archivi contenenti file eeo directory all'interno di un singolo file il quale puo essere
compresso utilizzando gli algoritmi di compressione di bzip e gzip. Non e uno strumento concepito per la
compressione di file
– c (crea un archivio)
– f (nome del file archivio)
– t (elenca il contenuto di un archivio)
– x (estrae un archivio)
– v (mostra l'elaborazione)
– j (compressione con bzip2)
– z (compressione con gzip)
●
Esempi:
– tar -cvf mio_archivio.tar mio_file
– tar -cvf mio_archivio.tar mio_file1 mio_file2 mia_dir1
– tar -tf mio_archivio.tar
– tar -xvf mio_archivio.tar
– tar -xvf mio_archivio.tar -C etmp
– tar -cvfj mio_archivio.tar.bz2 dir1
– tar -xvfj mio_archivio.tar.bz2
13/11/17 Ercole Palmeri 101
Esercitazione
Copiare una directory
da un punto ad un altro del flesystem
utilizzando tar
prima per unire i fle
e
poi per dividerli
(comando su di una unica riga)
13/11/17 Ercole Palmeri 102
Esercitazione tar
● tar -c -f fle /usr/mydir
● tar -x -f fle /usr/copia
● tar -c -f fle /usr/mydir | tar -x -f fle /usr/copia
13/11/17 Ercole Palmeri 103
Chmod: permessi file
● chmod: modifca i permessi di accesso di un fle
– Es: -rw-rw-r-- 1 user user 150 Mar 19 08:08 foo.txt
– Se sei il proprietario del fle (user), o sei connesso come account
principale (root), puoi modifcare tutte le autorizzazioni per il
proprietario, il gruppo e altri.
– Al momento, il proprietario e il gruppo possono leggere e scrivere
sul fle. Chiunque al di fuori del gruppo può leggere solo il fle (r--).
– Ricorda che le autorizzazioni di fle sono una funzionalità di
protezione:
● Ogni volta che consenti a chiunque altro di leggere, scrivere e
eseguire i fle, stai aumentando il rischio di manomissione,
alterazione o eliminazione del fle.
● Di regola, si dovrebbe concedere solo autorizzazioni di lettura e
scrittura a coloro che ne hanno veramente bisogno.
13/11/17 Ercole Palmeri 104
Chmod esercitazione
● Per aggiungere il permesso di scrittura a other
– chmod o+w mio.txt
– Il comando o+w indica al sistema che si desidera dare agli altri
l'autorizzazione al fle mio.txt.
– Per controllare i risultati, elencare nuovamente i dettagli del fle.
– Cosa vedete ?
● Per rimuovere le autorizzazioni di lettura e scrittura da foo.txt, utilizzare
il comando chmod per rimuovere entrambi i permessi di lettura e
scrittura.
– chmod go-rw foo.txt
– Digitando go-rw, stai dicendo al sistema di rimuovere le autorizzazioni
di lettura e scrittura per il gruppo e per gli altri dal fle foo.txt.
– Cosa vedete ?
● Ora provate a fare lo stesso con i codici in ottale
13/11/17 Ercole Palmeri 105
chown
● chown : cambia il proprietario di un fle
– ls -lart tmpfle;
– -rw-r-r-- 1 himanshu family 0 2012-05-22 20:03
tmpfle;
– tmpfle root di chown;
– ls -l tmpfle;
– -rw-r-r-- 1 root family 0 2012-05-22 20:03
tmpfle;
– Il proprietario del fle è stato cambiato da
'himanshu' a 'root'.
13/11/17 Ercole Palmeri 106
chown
● chown: modifca il gruppo di un fle
– Attraverso il comando chown, il gruppo (a cui un fle
appartiene) può anche essere modifcato.
– ls -l tmpfle
– -rw-r-r-- 1 himanshu family 0 2012-05-22 20:03 tmpfle
– Chown :friends tmpfle
– ls -l tmpfle
– -rw-r-r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfle
– Il gruppo del fle è cambiato da 'family' a 'friends'. Quindi
vediamo che aggiungendo un ':' seguito dal nuovo nome
di gruppo, il gruppo del fle può essere modifcato.
13/11/17 Ercole Palmeri 107
chown
● chown: Modifca sia il proprietario che il gruppo
– ls -l tmpfle
– -rw-r-r-- 1 family root 0 2012-05-22 20:03 tmpfle
– chown himanshu:friends tmpfle
– ls -l tmpfle
– -rw-r-r-- 1 himanshu friends 0 2012-05-22 20:03
tmpfle
– Usando la sintassi '<newOwner>: <newGroup>',
il proprietario e il gruppo possono essere
modifcati in una sola istruzione
13/11/17 Ercole Palmeri 108
chown
● chown: Usando il comando chown sul fle di collegamento simbolico
– il collegamento simbolico:
– ls -l tmpfle_symlnk
– lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfle_symlnk -> tmpfle
● il collegamento simbolico 'tmpfle_symlink' collega il fle 'tmpfle'.
● Consente di vedere cosa succede se il comando chown viene rilasciato in un
collegamento simbolico:
– chown root:friends tmpfle_symlnk
– ls -l tmpfle_symlnk
– lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfle_symlnk -> tmpfle
– ls -l tmpfle
– -rw-r-r-- 1 root friends 0 2012-05-22 20:03 tmpfle
● Quando il comando chown è stato eseguito sul link simbolico per modifcare il
proprietario e il gruppo, allora è il referente del collegamento simbolico cioè 'tmpfle'
e recepire la modifca. Questo è il comportamento predefnito del comando chown.
● Utilizzando l’opzione -h, la modifca ha effetto sul link
13/11/17 Ercole Palmeri 109
chown
● Se vogliamo modifcare il proprietario solo se un fle è di
proprietà di un determinato utente, allora andremo ad utilizzare
l’opzione -from. Cioè puoi modifcare il proprietario di un fle solo
se quel fle è già proprietario di un determinato proprietario.
– ls -l tmpfle
– -rw-r-r-- 1 root friends 0 2012-05-22 20:03 tmpfle
– chown -from=guest himanshu tmpfle
– ls -l tmpfle
– -rw-r-r-- 1 root friends 0 2012-05-22 20:03 tmpfle
– chown --from=root himanshu tmpfle
– ls -l tmpfle
– -rw-r-r-- 1 himanshu friends 0 2012-05-22 20:03 tmpflee
● Allo stesso modo possiamo modifcare il gruppo
13/11/17 Ercole Palmeri 110
chown
● Possiamo copiare le impostazioni del proprietario /
gruppo da un fle all'altro, lo facciamo utilizzando
l’opzione "-reference".
– ls -l fle
– -rwxr-xr-x 1 family himanshu 8968 2012-04-09 07:10
fle
– ls -l tmpfle
– -rw-r-r-- 1 root family 0 2012-05-22 20:03 tmpfle
– chown --reference=fle tmpfle
– ls -l tmpfle
– -rw-r-r-- 1 family himanshu 0 2012-05-22 20:03 tmpfle
13/11/17 Ercole Palmeri 111
chown
● Modifcare il proprietario / gruppo dei fle percorrendo le directory in modo
ricorsivo. Possiamo farlo utilizzando l’opzione "-R".
– ls -l linux / linuxKernel
– -rw-r-r-- 1 root friends 0 2012-05-22 21:52 linux / linuxKernel
– ls -l linux / redhat / rh7
– -rw-r-r-- 1 root friends 0 2012-05-22 21:52 linux / redhat / rh7
– chown -R himanshu: family linux /
– ls -l linux / redhat / rh7
– -rw-r-r- 1 himanshu family 0 2012-05-22 21:52 linux / redhat / rh
– ls -l linux / linuxKernel
– -rw-r-r-- 1 himanshu family 0 2012-05-22 21:52 linux / linuxKernel
● Quindi vediamo che dopo aver controllato il proprietario / gruppo di tutti i fle
nella directory 'linux' e le sue due sottodirectory 'redhat'. Abbiamo emesso il
comando chown con l'opzione "-R" per modifcare sia il proprietario che il
gruppo. Il comando è riuscito e il proprietario / gruppo di tutti i fle è stato
modifcato con successo.
13/11/17 Ercole Palmeri 112
sistema
● halt: chiude il sistema.
● reboot: riavvia il sistema.
● hostname: mostra e cambia il nome dell'host.
date : mostra la data.
● gzip : comprime e decomprime fle .gz.
● more : separa l'output in piu' pagine (anche less).
● reset : resetta il terminale alle impostazioni iniziali.
● lynx : browser web solo testo.
● zip e unzip : comprime e decomprime fle .zip.

Corso formazione Linux

  • 1.
    13/11/17 Ercole Palmeri1 Cosa e' Gnu/Linux ? ✔ Gnu/Linux e` un Sistema Operativo LIBERO, che funziona su quasi tutti gli hardware. ✔ Libero in questo caso signifca: ✒ APERTO, che tutti possono leggere, usare, modifcare, adattare purche` non vietino ad altri di fare altrettanto e purche' si rendano note a tutti le modifche fatte ✒ GRATIS
  • 2.
    13/11/17 Ercole Palmeri2 Dove trovare Gnu/Linux ? ✔ Gnu/Linux e` scaricabile da rete, copiabile da un amico, recuperabile su tante riviste.... ✔ Il punto di partenza su rete e' www.linux.org ✔ ma potete trovarlo, insieme a programmi e documentazione, distribuito su numerosi siti, e sotto diverse forme e distribuzioni
  • 3.
    13/11/17 Ercole Palmeri3 Cosa è un Sistema Operativo ? Un qualsiasi calcolatore si basa, dal 1965, su 3 ''elementi'': ● HARDWARE, il ''nudo metallo'' ● SOFTWARE, qualche cosa che mi fa fare delle cose utili e/o divertenti (...i programmi...) ● SISTEMA OPERATIVO, qualche cosa che fa ''parlare'' l'HW con il SW...
  • 4.
    13/11/17 Ercole Palmeri4 Cosa è un Sistema Operativo ? Nel 1969 nasce il primo SISTEMA OPERATIVO MODERNO, che faceva si che se il programma ''si piantava'', si piantava solo lui ma la macchina continuava a funzionare. Questo sistema operativo era, ed è ancora, UNIX. Dal 1970 ad oggi è il sistema operativo più usato nella ricerca, nelle università, su Internet.
  • 5.
    13/11/17 Ercole Palmeri5 Breve storia di Internet Nel 1957: ● i sovietici lanciano lo Sputnik... ● Gli americani creano ARPA (Advanced Research Projects Agency) che nel 1958 lancia il progetto di ARPA-NET. ● Nel 1964 i militari lasciano il progetto in mano al Club di 'Modellismo ferroviario' del MIT e il dipartimento di Elettronica di Stanford
  • 6.
    13/11/17 Ercole Palmeri6 Breve storia di Internet Prima connessione tra 2 computer Agosto 1969 Prima connessione tra 4 computer Dicembre 1969... Nella stesso periodo esce il primo UNIX per le universita`... Internet nasce nel 1969 con questo disegnino
  • 7.
    13/11/17 Ercole Palmeri7 Breve storia di Internet ● Nel 1974 Vint Cerf e Bob Kahn defniscono lo standard TCP che, insieme a IP, è quello con cui, tutt'ora, funziona Internet e TUTTE le reti di computer; ● Nel 1984 ARPA-NET si divide in MIL-NET e Inter-NET. MIL-NET tutt'ora usa TCP/IP del 1974; ● 1988: 2 November - Internet worm tira giù circa 6.000 dei 60.000 hosts di Internet; ● 1992: esce World-Wide Web (WWW) scritto da Tim Berners-Lee del CERN e connette CERN e Fermilab...
  • 8.
    13/11/17 Ercole Palmeri8 Come/Chi gestisce Internet ? ● Già nel 1969 fu deciso che NESSUNO avrebbe gestito internet dall'alto; ● Tutto si basava “e si basa tutt'ora” sui Request For Comments (RFC). La Richiesta di Commenti (RFC) è un tipo di pubblicazione della IETF (Internet Engineering Task Force) e della Società Internet (ISOC), i principali organismi di sviluppo tecnico e normative per Internet. ● L'unica cosa centralizzata e' l'assegnazione degli indirizzi (IP, hostname), fatta da NIC per conto della IETF di cui chiunque (compreso il sottoscritto) con un minimo di requisiti tecnici puo' entrare a far parte, dire la sua, votare....
  • 9.
    13/11/17 Ercole Palmeri9 Richard Matthew Stallman alias RMS ● Nel 1984, uno smanettone del MIT decide di iniziare a scrivere un sistema operativo libero, cioè SENZA LICENZA; ● Chiede aiuto in rete, e la gente risponde... ● Il tutto ''a gratis'', su macchine vecchie e recuperate....solo perchè credono che ''..chi usa un computer deve essere libero di cambiare i programmi per soddisfare le sue necessità e di scambiare conoscenza con gli altri, perchè l'aiuto reciproco è, o dovrebbe essere, alla base della società...'' ● Il progetto si chiamava, e si chiama, GNU (GNU is not Unix ...acronimo ricorsivo...).
  • 10.
    13/11/17 Ercole Palmeri10 GNU / Linux ● Nel 1985 viene fondata la Free Software Foundation, che da allora si occupa di sviluppare e diffondere software libero. ● Dal 1998 si occupa anche, ad esempio, di scrivere encicopledie, dizionari, libri di testo in Licenza GNU. ● Con cui, ad esempio, si stanno popolando biblioteche in africa, asia, america latina...
  • 11.
    13/11/17 Ercole Palmeri11 Open Source o Sorgente Aperto Il termine Open Source venne introdotto nel 1998 quale termine commerciale per indicare il “software libero”. Si voleva enfatizzare il fatto che il software Open Source non vuol dire necessariamente GRATUITO. E' stata fondata la OSI (Open Source Initiative) allo scopo di promuovere il software conforme alla Open Source Directive. Libero indica diverse “liberta” ad esempio: ● Ridistribuzione Libera del software e del codice ● Il Codice Sorgente e Aperto e disponibile per lettura, modifiche, analisi, controllo ● Prodotti derivati da prodotti GPL devono avere licenza GPL ● Copyright dell'autore Differenza tra Open Source e Software Libero free as beer vs. free as speech
  • 12.
    13/11/17 Ercole Palmeri12 Fasi di sviluppo ● 1994 Viene rilasciata la prima versione definitiva 1.0. Nascono RedHat, Debian, SUSE ad oggi le distribuzioni piu diffuse. Linux, che resta copyrighted by Linus Torvalds, diventa ufficialmente un software aperto, abbracciando in pieno la General Public License (GPL) del movimento GNU Open Source. Nascono i primi LUGs (Linux User Groups), ormai diffusi anche in Italia. ● 1995 Compaiono sul mercato nuove distribuzione commerciali come Caldera Linux. Kernel 1.2 out in Marzo. Dal kernel 1.3 in sviluppo si passera direttamente al 2.0 ● 1996 Rilasciata la versione 2.0. Compaiono le prime versioni tradotte in piu lingue. Linux necessita di una mascotte: nasce TUX, il pinguino piu famoso al mondo. ● 1999 Dopo lunga attesa il kernel 2.2 vede la luce. ● 2001 Agli inizi dell'anno, dopo varie pre-version, su kernel.org appare l'immagine da 19.788.626 byte del 2.4.0 La prima release di un altro stable thread. ● Oggi Linux e una reale alternativa al mondo Microsoft e Unix, ci sono milioni di utenti, migliaia di sviluppatori e un mercato in espansione. E' presente in sistemi integrati, e usato per il controllo di dispositivi robotizzati e ha volato a bordo dello shuttle, praticamente gira su oggetti elettronici di tutti i tipi, dai palmari alle workstation Alpha, risultando l'OS in assoluto piu soggetto a porting. Mac e alle origini di IoS.
  • 13.
    13/11/17 Ercole Palmeri13 Kernel: cosa è il Kernel ? Per kernel si intende il cuore di un sistema operativo. Il codice che gestisce le risorse presenti sul sistema e le rende disponibili alle applicazioni. Il kernel si occupa principalmente di gestire: ● le comunicazioni con l'hardware del sistema (device driver) ● i fle system e la memoria ● l'accesso alle risorse da parte dei processi (le applicazioni eseguite sul sistema)
  • 14.
  • 15.
    13/11/17 Ercole Palmeri15 Kernel: Versioni del Kernel Le versioni del kernel Linux sono identificate con numeri dal significato ben preciso. Per esempio il kernel 4.12.00 ha: ● 4 Major Number ● 12 Minor Number ● 00 Revision (patch) Major Number Il Major Number identifica il valore piu alto della revisione del kernel. Il rilascio di un kernel con un Major Number successivo rappresenta un evoluzione “notevole” in termini di funzionalita eeo di architettura rispetto il precedente. I kernel della serie 1.x sono ormai piuttosto vecchi e non piu usati.
  • 16.
    13/11/17 Ercole Palmeri16 Kernel: Versioni del Kernel Minor Number Se Pari il kernel viene considerato stable e pronto per sistemi in produzione, Se Dispari si considera in development da usare con cautela o per sperimentazione. Le release stable sono sempre figlie delle devel precedenti. Per esempio il kernel stable versione 2.6.22 e stabile, mentre quello in sviluppo e la 2.7.x (da cui derivera la 2.8.x o direttamente la 3.0.x). Solitamente nei kernel stable si tende a fare maintenance e ad implementare solo le features strettamente necessarie, lasciando a quello in development lo sviluppo di nuove funzionalita. Revision (patch) Indica la revisione (patch) corrente. E' un numero progressivo che parte da 0. Tra due revisioni successive possono passare da pochi giorni a varie settimane. Esistono inoltre varie patch temporanee, che rappresentano stadi intermedi STABILI prima della release di una revisione definitiva. Ha senso utilizzarle subito solo in caso di utilizzo di kernel con gravi problemi di sicurezza o stabilita.
  • 17.
    13/11/17 Ercole Palmeri17 Kernel: monolitico o modulare ? ● Monolitico: singolo file binario eseguibile in modalita "kernel" che contiene il gestore del processo, della memoria, del sistema, device driver ecc.. Esempi di tali sistemi sono UNIX, Linux, MS-DOS. – piu veloce perché il codice viene caricato al bootstrap dell'OSc – occupa maggiori risorse del sistemac – piu stabile perche non richiede ulteriori moduli, evitando cosi pericolose dipendenzec ● Modulare: kernel con la capacita di caricare o scaricare parti di codice (moduli) secondo necessita e richieste. Puo esserlo Linux configurandolo in fase di pre-compilazione. – utilizzato da tutte le distribuzioni LINUX
  • 18.
    13/11/17 Ercole Palmeri18 Distribuzioni Una Distribuzione (distro) e un confezionamento (packaging) di Linux, con procedure che rendono comoda e semplice l'installazione del Sistema Operativo e degli applicativi. Le distribuzioni differiscono per: ● Numero e versioni dei programmi installabilic ● Versione del kernel utilizzata e modalita di pre-installazione (il kernel solitamente non viene compilato durante una normale installazione)c ● Procedura di installazione (interfaccia utente e possibilita di definire opzioni e scegliere quale software installare)c ● Organizzazione di file di configurazione, programmi, log nel file systemc ● Configurazioni predefinite del software installato. Alcune distribuzioni sono disponibili in forma gratuita sotto licenza GPL. Altre sono a pagamento. Il costo e giustificato da: ● maggiore stabilita (viene eseguito un debug piu spinto prima di rilasciare una versione) ● presenza di programmi con licenza NON GPL ● supporto tecnico
  • 19.
    13/11/17 Ercole Palmeri19 Distribuzioni Distribuzione Note Web Red Hat Distribuzione orientata ad implementazioni e applicazioni di tipo Enterprise www.redhat.com Fedora 27 Versione Open Source derivata da RedHat https://getfedora.org/ Mandriva Lx 3.02 ex Mandrake ha dovuto cambiare nome per problemi di copyright https://www.openmandriva.org/ S.U.S.E. enterprise 12 Acquisita da Novell. Tramite Novell Open enterprise Server supporta i servizi Netware. https://www.suse.com/ Slackware 14.2 Una delle prime amata dai “puristi” http://www.slackware.com/
  • 20.
    13/11/17 Ercole Palmeri20 Distribuzioni Distribuzione Note Web Debian 9.2 Storica http://www.debian.org/ Ubuntu 17.10 Preinstallata da DELL, Acer e Asus https://www.ubuntu.com/ Linspire, attualmente non piu attiva Pubblicizzata come la distribuzione piu semplice da usare FreeNAS Per la realizzazione e gestione di server NAS http://www.freenas.org/ Gentoox Distribuzione nata per XbOX http://gentoox.shallax.com/
  • 21.
    13/11/17 Ercole Palmeri21 Linux per Google ● Android – Basato su linux Kernel v.2.6.5 – Talvolta incluso fra le distribuzioni di GNUeLinux ● ChromeOS ● – Inizialmente basato su Ubuntu (poi Gentoo)
  • 22.
    13/11/17 Ercole Palmeri22 Preparazione e installazione Durante l'installazione verrà chiesto come partizionare il disco rigido. diskdruid o fdisk sono i programmi più utilizzati dalle varie distribuzioni. Come minimo sono richieste almeno due partizioni: ● una partizione generale (/, root) in cui saranno memorizzati tutti i fle. ● una partizione di swap (usata come Memoria Virtuale) E' consigliato creare le seguenti partizioni: ● / (root), sotto la quale stanno tutte le altre directory ● /boot (dove risiedono il kernel ed i fle di boot. 120 Mb di spazio possono bastare) ● /var (fle che cambiano di dimensione, tipicamente i log. E' utile averla su partizione indipendente per evitare che un aumento inatteso dei log riempa tutto il flesystem (100 Mb). ● /home (fle di tutti gli utenti. Può essere piccola e praticamente inutilizzata (mail, dns server) o molto grossa e piena di documenti (web, fle server) ● /tmp dove risiedono fle temporanei.
  • 23.
    13/11/17 Ercole Palmeri23 Preparazione e installazione Qualora ci fosse un disco rigido gia partizionato e possibile installare ugualmente Linux senza perdere i dati esistenti, utilizzando Gparted. Gnome PARTition Editor - http:eegparted.sourceforge.nete E' possibile ridimensionare le partizioni esistenti mantenendone il contenuto inalterato e liberare lo spazio necessario all'installazione di Linux. Alcune distribuzioni permettono di utilizzare Gparted durante l'installazione. Si puo scaricare una distribuzione Live minima (circa 50 Mb) per creare un CD o una chiave USB avviabile per eseguire il partizionamento e poi procedere all'installazione della propria distribuzione. IMPORTANTE ESEGUIRE SEMPRE UNA COPIA DEI DATI. In caso di un problema o una errata operazione e FACILISSIMO perdere il contenuto del proprio disco rigido.
  • 24.
    13/11/17 Ercole Palmeri24 Dispositivi Device ● In Linux (come in Unix) i dispositivi sono rappresentati da file contenuti all'interno della cartella edev. ● In particolare i dischi rigidi di tipo IDE vengono indicati con: – edevehda per il primo disco presente sul primo controller IDE – edevehdb per il secondo disco IDE e cosi via..... ● Qualora il disco fosse con architettura SCSI o SATA verrebbe identificato con edevesda. Allo stesso modo le partizioni presenti nel disco edevesda vengono indicate con: edevesda1, edevesda2, ecc..
  • 25.
    13/11/17 Ercole Palmeri25 Dispositivi Mount ● Le partizioni per essere visibili devono essere montate all'interno di una directory sotto e (root). ● Per ognuna va indicato il relativo punto di mount: – edevehda1=> ehome – edevesda2=> e
  • 26.
    13/11/17 Ercole Palmeri26 Boot Loader Il boot loader effettua il caricamento del sistema operativo (come ad esempio il NTLDR in Windows). I boot loader piu diffusi sono LILO (LInux LOader) e GRUB, quest'ultimo sta progressivamente sostituendo LILO poiché essendo nato successivamente, ha migliorato alcune funzionalita e superato alcuni limiti di LILO. Boot Manager LILO o GRUB non si limitano SOLO al caricamento di Linux, ma sono a tutti gli effetti dei veri e propri BOOT MANAGER. Questo vuol dire che possono eseguire il caricamento di altri sistemi operativi (windows ad esempio) presenti sul disco rigido, dando all'utente in fase di boot la possibilita di scegliere quale usare.
  • 27.
    13/11/17 Ercole Palmeri27 Boot Loader - Installazione Durante l'installazione verra chiesto se installare il boot loader nel Master Boot Record (MBR) o all'interno di una partizione Linux (ext2 o ext3). Normalmente si installa nel MBR quando Linux e il solo sistema operativo o si vuole usare il boot loader anche come come boot manager. Utilizzando un boot manager differente l'installazione VA ESEGUITA all'interno della partizione principale di Linux e (root). L'installazione del boot loader va eseguita con molta cura, un errore puo causare l'impossibilita di avviare il/i sistema/i operativo/i presenti su disco rigido.
  • 28.
    13/11/17 Ercole Palmeri28 Installazione e pacchetti In genere ogni distribuzione permette di scegliere il tipo di installazione che si vuol fare proponendo tra 3 tipologie: ● Desktop – Per un utilizzo personale (equivalente a Windows XP/Vista) ● Server ● Uffcio – Con programmi specifci per offce automation Package Manager (PM) ● L'utilizzo dei Package Manager permette di installare, aggiornare, verifcare o rimuovere i programmi con molta facilità. ● I programmi vengono raccolti all'interno di un singolo fle che contiene anche le istruzioni per l'installazione e la disinstallazione necessarie al Package Manager.
  • 29.
    13/11/17 Ercole Palmeri29 Installazione e pacchetti I Package Manager esistenti sono: ● rpm nato con le distribuzioni Red Hat (Red Hat Package Manager) è utilizzato oggi da diverse distribuzioni. I fle pacchettizzati hanno come estensione .rpm. ● dpkg creato da Debian e utilizzato dalle distribuzioni da essa derivate, utilizza un formato differente con estensione .deb. E' stato il primo ad avere uno strumento per la soluzione delle dipendenze chiamato apt (Advanced Package Tool) Altri PM che riconoscono le dipendenze tra i pacchetti sono (su base rpm): ● YUM (Yellow dog Updater Modifed) utilizzato da Fedora ● YaSt (Yet Another Setup Tool) utilizzato da SUSE ● urpmi utilizzato da Mandriva
  • 30.
    13/11/17 Ercole Palmeri30 Installazione e Utenti In ambienti Unix e quindi anche su Linux esistono differenze fra i vari utenti, defnite dai permessi e dall'acceso ai fle e comandi che un'utente può lanciare. E' convenzione che i semplici utenti possono scrivere, leggere e modifcare fle solo all'interno del loro ambiente (home) e lanciare semplici comandi che non infuiscono sulla confgurazione del sistema. Per poter accedere completamente alle risorse del sistema bisogna accedere al sistema come superuser ovvero come utente root. In fase di installazione di una macchina Linux si consiglia di scegliere una password di root piuttosto complicata (ma ricordabile!) e di creare immediatamente un normale utente con il quale operare per tutte le attività di tipo NON AMMINISTRATIVO.
  • 31.
    13/11/17 Ercole Palmeri31 Installazione e Utenti L'utente root e l'amministratore del sistema con tutti i poteri che comporta questo ruolo, quindi e molto importante che l'accesso a root sia limitato solo al reale amministratore di sistema (sysadm) E PER IL TEMPO STRETTAMENTE NECESSARIO. L'utente root ha poteri assoluti sul sistema: ● Aggiungere, Eliminare e modificare account (altri utenti) ● Installare e configurare servizi ● Accesso completo (lettura e scrittura) di tutti i file presenti nel filesystem Aggiungere e Modificare il Filesystem ● Distruggere tutto con un solo comando IL POTERE DI ROOT SUL SISTEMA E ASSOLUTO
  • 32.
  • 33.
    13/11/17 Ercole Palmeri33 Filesystem secondo Wikipedia ● Un file system (abbreviazione: FS), in informatica, indica informalmente un meccanismo con il quale i file sono posizionati e organizzati o su un dispositivo di archiviazione o su una memoria di massa, come un disco rigido o un CD- ROM e, in casi eccezionali, anche sulla RAM. ● Piu formalmente, un file system e l'insieme dei tipi di dati astratti necessari per la memorizzazione (scrittura), l'organizzazione gerarchica, la manipolazione, la navigazione, l'accesso e la lettura dei dati. Di fatto, alcuni file system (come l'NFS) non interagiscono direttamente con i dispositivi di archiviazione. ● I file system possono essere rappresentati sia graficamente tramite file browser sia testualmente tramite shell testuale. Nella rappresentazione grafica (GUI) e generalmente utilizzata la metafora delle cartelle che contengono documenti (i file) ed altre sottocartelle.
  • 34.
    13/11/17 Ercole Palmeri34 Filesystem Linux ● Un unico albero con radice e («» vs. «e») ● Unix estende molto il concetto di filesystem – file e cartelle – collegamenti (hardesoft) ad altri punti, cioe link a directory o device – device (a caratteri e a blocchi) – mountpoint (i.e., altri filesystem) – informazioni sul sistema (hw e sw) – comunicazione fra processi
  • 35.
    13/11/17 Ercole Palmeri35 Filesystem Linux /usr/giuliano/documenti/meeting.txt path Nome file
  • 36.
    13/11/17 Ercole Palmeri36 Tipi di percorso ● Percorso assoluto – Absolute path – A partire dalla radice ● eusregiulianoedocumentiemeeting.txt ● Percorso relativo – Relative path – A partire dal punto corrente ● .edocumentiemeeting.txt ● .emeeting.txt
  • 37.
    13/11/17 Ercole Palmeri37 Standard Filesystem Linux ● e – Dove inizia l’intero albero ● ebin – Eseguibili necessari in modalita single user e per portare su il sistema o per ripararlo ● esbin – Eseguibili per l’amministratore
  • 38.
    13/11/17 Ercole Palmeri38 Standard Filesystem Linux ● eetc – file di configurazione locali alla macchina – contiene svariate sotto cartelle – talvolta detta il «sistema nervoso» del sistema ● eetceskel – quando un nuovo utente viene creato, la sua home viene popolata copiando i file di questa cartella
  • 39.
    13/11/17 Ercole Palmeri39 Standard Filesystem Linux ● elib – librerie condivise emnt – mount point usato per filesystem montati temporaneamente ● etmp – file temporanei che possono essere cancellati senza preavviso
  • 40.
    13/11/17 Ercole Palmeri40 Standard Filesystem Linux ● / boot – File necessari durante il processo di boot – spesso un flesystem diverso ● / home ● cartella personali degli utenti ● / r oot ● la cartella personale dell’amministratore ● spesso su un flesystem diverso da /home
  • 41.
    13/11/17 Ercole Palmeri41 Filesystem Linux: link
  • 42.
    13/11/17 Ercole Palmeri42 Filesystem Linux: link
  • 43.
    13/11/17 Ercole Palmeri43 Filesystem Linux: link
  • 44.
    13/11/17 Ercole Palmeri44 Filesystem Linux Ogni fle specifca ● L’utente che lo possiede (owner) ● Il nome di un gruppo ● La dimensione ● Altre informazioni
  • 45.
    13/11/17 Ercole Palmeri45 Filesystem Linux Ogni fle tiene traccia dell’ultimo istante ● in cui è stato letto ● in cui è stato scritto ● in cui ha mutato stato
  • 46.
    13/11/17 Ercole Palmeri46 Filesystem Linux In un sistema Unix i fle vengono discriminati utilizzando diverse informazioni: ● il «tipo»: – Testo – Directory – Mount, link … ● gli «attributi» ● il primo carattere ● l’estensione ● il suffsso (l’ultimo carattere) ● il contenuto
  • 47.
    13/11/17 Ercole Palmeri47 Filesystem Linux: Tipi di fle ● Normali («File regolari») ● Cartella ● Collegamenti («Symbolic link») ● Named pipe ● Socket ● Device (blocchi/carattere)
  • 48.
    13/11/17 Ercole Palmeri48 Filesystem: attributi ● Alcune operazioni possono essere permesseevietate: – lettura (read) – scritturaemodifica (write) – esecuzione (execute) ● Dai seguenti utenti: – Chi lo possiede (user) – Chi fa parte del gruppo del file (group) – Tutti gli utenti del sistema (other)
  • 49.
    13/11/17 Ercole Palmeri49 Primo carattere ● Il primo carattere fa parte del nome del file – nessun significato per il sistema operativo ● I file che iniziano con un punto sono file nascosti, ovvero non vengono mostrati normalmente ● File speciali – «.» rappresenta la cartella corrente – «..» rappresenta la cartella padre
  • 50.
    13/11/17 Ercole Palmeri50 Estensione/Suffsso ● L’estensione ed il suffisso fanno parte del nome del file – nessun significato per il sistema operativo ● Convenzione – estensioni standard (e.g., .c .o .h .gz) – suffissi standard (~) – utilizzati da alcuni applicativi (e.g., less)
  • 51.
    13/11/17 Ercole Palmeri51 Contenuto ● Il fle viene esaminato alla ricerca di specifche sequenze o schemi (inteso come contenuto del fle) ● Esempi – eseguibili windows – immagini jpg, png ● Utilizzato da alcuni applicativi (e.g., shell grafche)
  • 52.
    13/11/17 Ercole Palmeri52 Permessi ● Linux è un sistema multiutente. Per ogni fle ci sono 4 categorie di utenti: – Root: l’amministratore del sistema – Owner: il proprietario del fle – Group: il gruppo di utenti – World: il «resto del mondo» ● Ogni utente può leggere, modifcare ed eseguire (nel caso di programmi) i fle in base ai permessi che ha su di esso; ● Il blocco di caratteri «rw-r--r--» (o una qualsiasi altra combinazione di r, x, w o -) rappresenta i permessi di accesso ai fle. I primi 3 (rw-) sono riferiti all’owner. Il secondo blocco di 3 caratteri (r--) è riferito al group e l’ultimo blocco (r--) è riferito alla categoria world; ● La prima posizione di ogni blocco rappresenta il permesso di lettura (r) del fle, la seconda il permesso di scrittura (w) sul fle e la terza il permesso di esecuzione (x) del fle (se si tratta per esempio di un programma). Un trattino (-) in una qualsiasi posizione indica l’assenza del permesso corrispondente; ● per accedere a una directory, bisogna avere il permesso di esecuzione su di essa.
  • 53.
    13/11/17 Ercole Palmeri53 Shell ● Bourne shell (sh) – L’originale shell scritta da Steve Bourne dei Bell Labs – Disponibile su tutti i sistemi UNIX ● C shell (csh) – Scritta a Berkley (California), include alcuni costrutti simili al linguaggio C ● TC Shell (tcsh) – Shell compatibile con C shell a cui aggiunge alcune funzionalita (e.g., editing, completamento)
  • 54.
    13/11/17 Ercole Palmeri54 Shell ● Korn shell (ksh) – Di David Korn dei Bell Labs – C e TC shells insieme piu un linguaggio simile all’originale Bourne shell ● Oggi standard di quasi tutti i sistemi Linux
  • 55.
    13/11/17 Ercole Palmeri55 Shell ● Bourne Again Shell (bash) – Shell di pubblico dominio della FSF per GNU – Cerca di implementare completamente lo standard IEEE Posix Shell and Tools specifcation – Unisce le caratteristiche della C shell e della Korn shell – Il linguaggio di programmazione è compatibile con la Bourne shell
  • 56.
    13/11/17 Ercole Palmeri56 Standard Filesystem ● e – Dove inizia l’intero albero ● ebin – Eseguibili necessari in modalita single user e per portare su il sistema o per ripararlo ● esbin – Eseguibili per l’amministratore ● eetc – file di configurazione locali alla macchinacontiene svariate sotto cartelletalvolta detta il «sistema nervoso» del sistema ● eetceskel – quando un nuovo utente viene creato, la sua home viene popolata copiando i file di questa cartella
  • 57.
    13/11/17 Ercole Palmeri57 Standard Filesystem ● /lib – librerie condivise ● /mnt – mount point usato per filesystem montati temporaneamente ● /tmp – file temporanei che possono essere cancellati senza preavviso ● /boot – File necessari durante il processo di boot – spesso un filesystem diverso ● /home – cartella personali degli utenti
  • 58.
    13/11/17 Ercole Palmeri58 Standard Filesystem ● /root – la cartella personale dell’amministratore – spesso su un filesystem diverso da ehome ● /mnt – mount point usato per filesystem montati temporaneamente ● /media – mount point usato abitualmente (e automaticamente) per dischi rimovibili (CD, USB) ● /usr – dati condivisi, non essenziali, e a sola lettura ● /opt – altro software (non incluso nella distro standard) ● /var – dati variabili non sempre condivisibili
  • 59.
    13/11/17 Ercole Palmeri59 Standard Filesystem ● /srv – dati dei servizi disponibili sul sistema specifico ● /tmp – file temporanei(solitamente) svuotata ad ogni reboot ● /var/tmp – file temporaneila cartella potrebbe essere su un filesystem diverso (e quindi non essere disponibile durante il boot) – (solitamente) non svuotata al reboot ● /dev – File speciali o device, i quali fanno riferimento a dispositivi fisici
  • 60.
    13/11/17 Ercole Palmeri60 Standard Filesystem ● /proc – mount point per il filesystem proc, il quale fornisce informazioni sui processi in esecuzione e sul kernel ● /sys – Informazioni aggiornate in tempo reale sui device del sistema ● /lost+found – dati recuperati dall’ultimo check del disco – presente su ogni filesystem standard
  • 61.
    13/11/17 Ercole Palmeri61 Concetti Linux: stdin, stdout e stderr ● Quando un programma scrive qualcosa sullo schermo, sta usando una cosa che si chiama standard output, abbreviato stdinc ● stdin e cio che viene usato per comunicare con i programmi e standard inputc ● Per esempio, il comando ls stampa su stdout il contenuto della directory specificata o quella corrente, che e normalmente ``connesso'' al vostro terminale. Un comando interattivo, come la shell, bash, legge i vostri comandi dallo standard inputc ● E anche possibile per un programma scrivere nello standard error, dato che e molto semplice dirottare lo standard output altrove rispetto al terminale. Lo standard error, stderr, e quasi sempre connesso al terminale, cosi una persona puo leggere i messaggi d'errorec ● Stdin e identificato con il numero 1: cat 1>pippo.txt, stdin si interrompe con Ctrl-Z ● Stdout e identificato con il numero 2: cat pippo.txt>2
  • 62.
    13/11/17 Ercole Palmeri62 Concetti Linux: redirezione stdin/stdout/stderr ● Una caratteristica di linux e la capacita di redirigere l'output. Questo vi permette, invece di vedere i risultati di un comando sullo schermo, di registrarli in un file o di mandarli direttamente alla stampante. Per esempio, per redirigere l'output del comando ls /usr/bin, possiamo mettere il segno > alla fine della linea e diremo in quale file vogliamo che sia messo l'outputc ● Un programma o un comando, invece di leggere dalla tastiera, puo legge da un file. La redirezione dell'input e simile alla redirezione dell'output, quindi il carattere speciale per la redirezione dell'input e <. Anche in questo caso deve essere messo dopo il comando da eseguirec ● La redirezione dell'input e utile nel caso in cui si ha un file di dati e un comando che si aspetta dell'input dallo standard input.
  • 63.
    13/11/17 Ercole Palmeri63 Comandi di base: Pipelines e simili ● comando > filename: Redireziona l'output di comando verso il filename. Il file viene cancellato e sostituito dal nuovo testo. ● comando >> filename: Redireziona l'output di comando verso il filename. Il testo viene appeso in coda al file. ● comando < filename: Usa il filename come input di comando. ● comando < filename-in > filename-out ● comando < filename-in >> filename-out: Combinazione delle precedenti. ● comando1 | comando2: pipeline. L'output di comando1 verra usato come input di comando2. I due programi sono avviati in parallelo. ● comando1 && comando2: esegue i due comandi uno dopo l'altro. ● comando &: esegue il comando in background. E come usare bg.
  • 64.
    13/11/17 Ercole Palmeri64 Comandi di base: Lavorare con file e directory ● cd: cambia la directory corrente – cd <directory in cui spostarsi> ● ls: mostra il contenuto di una directory – ls <nome directory da elencare> ● cp: copia file e directory – cp <sorgente> <destinazione> ● mv: muove o rinomina un file o una directory ● rm: cancella file e directory ● mkdir: crea una directory
  • 65.
    13/11/17 Ercole Palmeri65 Comandi di base: Lavorare con file e directory ● ln: crea link a file e directory. – l’istruzione ln crea una nuova voce di directory (file collegato) che ha le stesse caratteristiche del file originalec – Permette di avere piu copie di un file senza utilizzare lo spazio per copie multiple, la copia e costituita da un collegamento all’originalec – Ci sono due tipi di link, e la modalita fa la differenza: ● Hard: ln per default crea un link di tipo hard, caratterizzato dal fatto che e indistinguibile dall’oggetto originale. Qualsiasi modifica di un file e effettivamente indipendente del nome utilizzato per fare riferimento al file. ● Simbolico: contiene il nome del file a cui e collegato. Il file di riferimento viene utilizzato quando viene eseguita un'operazione sul collegamento. – Ls -s file_sorgente file_target (file_target puo essere directory)
  • 66.
    13/11/17 Ercole Palmeri66 Comandi di base: Lavorare con file e directory ● Il comando ls mostra i symbolic link usando una l come primo carattere degli attributi del file ● Rimuovendo un link il file originale non viene rimosso ● Rimuovendo un file gli eventuali link divengono inconsistenti – ls -l ● lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link1 -> original ● lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2 -> original ● -rw-r--r-- 1 scarpazz 5 Jul 14 14:37 original – rm link1 – ls -l ● lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2 -> original ● -rw-r--r-- 1 scarpazz 5 Jul 14 14:37 original – rm original – ls -l ● lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2 -> original – cat link2 ● cat: cannot open link2
  • 67.
    13/11/17 Ercole Palmeri67 Comandi di base: Lavorare con file e directory ● Il comando ls mostra gli hard link incrementando link count, nella seconda colonna ● Rimuovendo un link il file originale non viene rimosso ● Il file non viene rimosso fino a che tutti i link non sono stati rimossi – ls -l ● lrwxrwxrwx 3 scarpazz 8 Jul 14 14:38 link1 ● lrwxrwxrwx 3 scarpazz 8 Jul 14 14:38 link2 ● -rw-r--r-- 3 scarpazz 5 Jul 14 14:37 original – rm link1 – ls -l ● lrwxrwxrwx 2 scarpazz 8 Jul 14 14:38 link2 ● -rw-r--r-- 2 scarpazz 5 Jul 14 14:37 original – rm original – ls -l ● lrwxrwxrwx 1 scarpazz 8 Jul 14 14:38 link2 – cat link2 – This is the content of the file...
  • 68.
    13/11/17 Ercole Palmeri68 Comandi di base: Lavorare con file e directory ● pwd: mostra la directory corrente. ● chmod: comando che modifica i permessi (lettura, scrittura, esecuzione), a un file o a un gruppo di files. Il comando si esprime con un numero di 3 cifre (in ‘ottale’) e il file o gruppi di file. Il numero di 3 cifre esprime i tipi di permessi secondo la logica proprietarioegruppoetutti gli altri. Le tre cifre esprimono quanto segue – 7 corrisponde a rwx – 6 corrisponde a rw – 5 corrisponde a rx – 4 corrisponde a r – 3 corrisponde a wx – 2 corrisponde a w – 1 corrisponde a x – 0 negato ogni accesso ● chown: cambia il proprietario di un file. ● cat: mostra il contenuto di un file. ● find: cerca un file tra le directory.
  • 69.
    13/11/17 Ercole Palmeri69 Comandi di base: esercitazione ● Visualizzare la directory corrente di lavoro nel file system ● Visualizzare il contenuto della directory corrente ● Creare una directory denominata cognome_nome ● Spostarsi nella directory al punto cognome_nome ● Creare un file chiamato CIAO.txt da stdin ● Visualizzare a video il contenuto del file CIAO.txt ● Rinominare il file CIAO.txt con un nome a scelta ● Spostarsi nella directory superiore ● Creare una directory Cognome
  • 70.
    13/11/17 Ercole Palmeri70 Comandi di base: esercitazione ● Visualizzare la directory corrente di lavoro nel file system – pwd ● Visualizzare il contenuto della directory corrente – ls ● Creare una directory denominata cognome_nome – mkdir cognome_nome ● Spostarsi nella directory al punto cognome_nome – cd cognome_nome ● Creare un file chiamato CIAO.txt da stdin – cat 1>CIAO.txt ● Visualizzare a video il contenuto del file CIAO.txt – cat CIAO.txt ● Rinominare il file CIAO.txt con un nome a scelta – mv CIAO.txt nome.txt ● Spostarsi nella directory superiore – Cd .. ● Creare una directory Cognome – mkdir Eserc_Cognome
  • 71.
    13/11/17 Ercole Palmeri71 Riferimento manuale inlinea ● Linux fornisce due diversi sistemi di help relativi ai comandi: man e info – man cmd ● cmd Comando di cui mostrare il manuale – info cmd ● cmd Comando di cui mostrare il manuale ● storicamente, info e arrivato dopo man e presenta funzionalita piu avanzate
  • 72.
    13/11/17 Ercole Palmeri72 Comandi di base: editor vi ● L’editor "vi" viene lanciato con il seguente comando: – vi [-r] [+comando] [file1 [file2 ... filen]] ● l’opzione -r puo essereutilizzata dopo un crash del sistema (per recuperare le modifiche non memorizzate relative al file)c ● +comando apre la sessione dell'editor eseguendo il "comando" (sono significativi solamente i comandi di editor di linea)c ● se si specificano piu nomi di file da editare, 'vi' entra in editing sul primo file indicato, e su richiesta (comando ':n') passera in ordine ai successivi.
  • 73.
    13/11/17 Ercole Palmeri73 Comandi di base: editor vi ● entrando in "vi", compariranno sullo schermo le prime 24 righe del file (con "~" come primo carattere sulle righe vuote), e ci si trovera in COMMAND MODE. Quest'ultimo e uno dei tre possibili stati dell'editor "vi": – COMMAND MODE: Il cursore e posizionato sul testo, la tastiera e utilizzabile solo per richiedere l'esecuzione di comandi, e non per introdurre testo. I caratteri digitati non vengono visualizzatic – INPUT MODE: Tutti i caratteri digitati vengono visualizzati ed inseriti nel testo. Si passa in input mode ad ogni richiesta di inserimento di testoc – DIRECTIVE MODE: Ci si trova (tramite ":") posizionati con il cursore nella linea direttive (l'ultima linea del video) e si possono richiedere a "vi" tutti i comandi per il controllo del filec ● I passaggi di stato avvengono con i seguenti caratteri: – DIRECTIVE MODE -----> COMMAND MODE <RET> – COMMAND MODE -----> INPUT MODE oORia – INPUT MODE -----> COMMAND MODE <ESC> – COMMAND MODE -----> DIRECTIVE MODE :e?
  • 74.
    13/11/17 Ercole Palmeri74 Vi: particolarità ● All'interno del "vi" e possibile lanciare comandi appartenenti alla shell da cui e stato richiamato il "vi" stesso. Il comando e eseguibile in directive mode: – :!comando ● Per quanto riguarda le cancellazioni: – 'vi' ha un singolo buffer, nel quale viene salvata l'ultima porzione di testo cancellata, nove buffer numerati (1 2 ... 9) ed un insieme di buffer individuati dalle lettere dell'alfabeto (a b ... z) a disposizione dell'utente. – I buffer, in caso di editing di piu file in successione, non vengono cancellati nel passare da un file all'altro, permettendo cosi spostamenti di parte di testo tra file diversi. – I buffer possono anche essere utilizzati per cancellazioni e ripristini o per spostamenti di parti di testo all'interno di uno stesso file. ● E importante ricordare che per il 'vi': – una parola e una qualsiasi sequenza di caratteri chiusa da uno spazioc – una frase di testo e una qualsiasi sequenza di caratteri chiusa da '.', '!' oppure '?' seguiti da newline o da due spazic – un paragrafo e invece delimitato da una linea vuota.
  • 75.
    13/11/17 Ercole Palmeri75 Vi: spostamenti di base (COMMAND MODE) ● Tutti i comandi di spostamento sono eseguibili in COMMAND MODE. – h 1 spazio a sinistra – l 1 spazio a destra – k 1 linea sopra – j 1 linea sotto – (in sostituzione di questi quattro caratteri, si possono anche utilizzare le frecce per spostarsi nelle diverse direzioni) – G posizionamento sull'ultima linea del testo – #G posizionamento sulla linea identificata da "#" (dove #=numero) ● Esempi: 3G 5G 175G – :# stesso funzionamento di #G (ma in directive mode) ● #movec ripete "move" "#" volte (dove move=qualsiasi comando di spostamento) – Ad esempio “3h” sposta il cursore a sinistra di 3 caratteri
  • 76.
    13/11/17 Ercole Palmeri76 Vi: OPERAZIONI SUL VIDEO ● ^Gmostra lo stato del file corrente (informazioni varie) ● := mostra il numero di linee del file ● :.= mostra il numero della linea corrente ● ^L refresh del video ● ^D si posiziona mezza pagina avanti (in INSERT MODE shifta indietro di un TAB) ● ^U si posiziona mezza pagina indietro ● ^F si posiziona sulla pagina successiva ● ^B si posiziona sulla pagina precedente – i tasti di controllo delle pagine, ^D-^U-^F-^B, possono anche essere utilizzati con un opzionale moltiplicatore, come ad esempio: 5^F 5 pagine avanti) ● ^E sposta la schermata avanti senza spostare il cursore ● ^Y sposta la schermata indietro senza spostare il cursore ● H si posiziona all'inizio della schermata ● M si posiziona al centro della schermata ● L si posiziona al fondo della schermata ● << shifta la linea corrente a sinistra ● <L shifta tutte le linee, da quella corrente alla fine dello schermo, verso sinistra ● >> shifta la linea corrente a destra (come TAB in INSERT MODE) ● >L shifta tutte le linee, da quella corrente alla fine dello schermo, verso destra
  • 77.
    13/11/17 Ercole Palmeri77 Vi: SPOSTAMENTI SU LINEA ● $ si posiziona alla fine della linea ● ^ si posiziona al primo carattere non-blank della linea ● 0 si posiziona alla colonna zero (inizio linea) ● #| si posiziona ad un'esatta colonna sulla linea (colonna "#") – Esempi: 5| 1| 9| ● w si posiziona all'inizio della parola successiva (una parola e delimitata da un carattere non alfanumerico) ● e si posiziona alla fine della parola successiva ● b torna all'inizio della parola precedente ● W,E,B stesso funzionamento di w,e,b (parola delimitata da spazio) ● + posizionamento al primo carattere non-blank della linea successiva (come RETURN) ● - posizionamento al primo carattere non-blank della linea precedente
  • 78.
    13/11/17 Ercole Palmeri78 Vi: EDIT ● ESC fa uscire dall'INPUT MODE, per terminare quindi l'inserimento e tutte le modifiche in generale (se c'e qualcosa che non va, funziona anche ^C) ● . ripete l'ultimo cambiamento effettuato (o meglio, l'ultimo comando dato) ● o OPEN: inserisce una linea sotto quella corrente ● O OPEN: inserisce una linea sopra quella corrente ● i INSERT: inserisce caratteri a sinistra del cursore ● I INSERT: inserisce caratteri all'inizio della linea ● a APPEND: aggiunge caratteri a destra del cursore ● A APPEND: aggiunge caratteri alla fine della linea ● J JOIN: concatena la linea successiva alla corrente ● #s SUBSTITUTE: sostituisce per "#" caratteri, di default 1 carattere ● #S SUBSTITUTE: sostituisce per "#" intere linee, di default 1 linea ● #r REPLACE: sostituisce "#" caratteri, di default 1 carattere (non e necessario premere ESC)c con "rcarattere" (dove 'carattere' e un qualsiasi carattere), il carattere di posizionamento del cursore viene sostituito con quello specificato dopo 'r' ● R REPLACE: entra in modalita di sovrascrittura
  • 79.
    13/11/17 Ercole Palmeri79 Vi: EDIT ● c[x] CHANGE: cambia fino a dove specificato con "x" – Esempio: cw sostituisce la parola corrente ● cc CHANGE: cambia l'intera linea ● C CHANGE: cambia fino alla fine della linea ● aI comandi EDIT sin qui descritti e possibile anteporre un numero , e cio comportera la duplicazione della funzione desiderata tante volte quanto specificato dal numero. I comandi che seguono non hanno questa caratteristica. Non e possibile specificare il numero. ● ^D elimina un rientro (TAB) ● ^^D elimina tutti i rientri per la linea corrente (digitare il carattere '^' e poi un CTRL-D) ● ^W cancella l'ultima parola introdotta ● ^U cancella l'ultima linea introdotta ● ^H corrisponde a backspace, cioe torna indietro di un carattere ● ^V permette di inserire nel testo il carattere ESC
  • 80.
    13/11/17 Ercole Palmeri80 Vi: ricerche ● f char: cerca la successiva occorrenza di 'char' sulla linea ● t char: si sposta fino alla successiva occorrenza di 'char' sulla linea ● F char: cerca la precedente occorrenza di 'char' sulla linea ● T char: si sposta fino alla precedente occorrenza di 'char' sulla linea ● c ripete l'ultimo f, t, F o T eseguito ● , capovolge l'ordine dell'ultimo f, t, F o T eseguito ● %: mostra il confronto con (), [] o {} ● n: NEXT: ripete l'ultimo comando e o ? ● N: NEXT: capovolge l'ordine dell'ultimo comando e o ? ● estring: trova 'string' cercando in avantic in aggiunta, ● estringecestr2e: spostera il cursore sulla prima 'str2' dopo 'string' ● ?string: trova 'string' cercando a ritrosoc l'opzione "c" ● ?string?: ha lo stesso funzionamento come sopra ● e, ?: utilizza la stringa usata per la ricerca precedente
  • 81.
    13/11/17 Ercole Palmeri81 Vi: UNDO & PASTE ● u: annulla l'ultima modifica ● U: annulla tutte le modifiche fatte alla linea corrente fino a quando il cursore non e stato spostato dalla linea ● P: incolla il contenuto del buffer prima del cursore ● p: incolla il contenuto del buffer dopo il cursore ● "<char>PASTE: incolla il buffer richiamato (char=a-z), utilizzando uno dei comandi sopraelencati ● "#PASTE: incolla il buffer numerato (#=1-9) utilizzando uno dei comandi sopraelencati ● "[1-9]PASTE utilizza un comando PASTE per incollare uno dei buffer numeratic i buffer numerati immagazzinano le ultime 9 cancellazioni effettuate, con il metodo "first in last out". Solitamente si utilizzano per riportare sul file porzioni testo precedentemente cancellate – Esempi: "1P "2p
  • 82.
    13/11/17 Ercole Palmeri82 Vi: EXIT ● ZZ: aggiorna sempre il file ed esce (da COMMAND MODE) ● :[#,#]w[!] [filename] ---> WRITE: scrive senza uscire (nel file "filename", se viene specificato, altrimenti nel file corrente)c vengono utilizzati "#,#" per specificare gli indirizzi 'from' e 'to' (daea), e "!" (bang) per forzare la scrittura (cioe per riscrivere) – Esempi: ● :1,5 w abcd scrive le linee da 1 a 5 nel file abcd ● :efrome,etoe w efg scrive da 'from' a 'to' nel file efg ● :efrome,+5 w hij scrive da 'from' a 5 linee dopo nel file hij ● :x WRITE and QUIT: aggiorna, se necessario, ed esce ● :wq WRITE and QUIT: aggiorna ed esce ● :q[!] QUIT: esce senza salvare le modifiche
  • 83.
    13/11/17 Ercole Palmeri83 Vi: Esercitazione Preparare un testo con l’editor vi che contiene un elenco dei principali comandi Linux che ricordi con una breve descrizione della funzionalita.
  • 84.
    13/11/17 Ercole Palmeri84 I processi ● Un programma descrive le operazioni che devono essere svolte dal calcolatore per mezzo di istruzioni di alto livello (sorgente) o di basso livello (codice macchina) ● Un processo rappresenta una esecuzione del codice di un programma ● Un processo e costituito da: – Una immagine del programma, cioe del suo codice macchina – Un descrittore di processo e organizzato schematicamente cosi: ● Puntatore ● Stato del processo ● Process ID ● Contatore di programma ● Contenuto dei registri del processore ● Memoria associata al processo ● File descriptor dei file aperti ● ...
  • 85.
    13/11/17 Ercole Palmeri85 Esecuzione di un processo ● Un processo viene sempre creato da un altro processo – Il processo creatore si chiama processo padre o parent process – Il processo creato si chiama processo figlio o child process ● Nei sistemi operativi unixlike tutti i processi discendono dal processo init, che inizializza il sistema ● I processi possono essere in esecuzione in due modalita: – Foreground Il processo figlio eredita e ritiene tutte le risorse del padre. Il padre e sospeso in attesa della terminazione del figlio – Backgroud Il processo figlio eredita tutte le risorse del padre. Il processo padre rimane in esecuzione. A questo punto e lo scheduler ad assegnare le risorse ai due processi. ● L’utente puo specificare eeo modificare la modalita di esecuzione di un processo.
  • 86.
    13/11/17 Ercole Palmeri86 Operazioni sui processi ● Creazione – Un processo viene creato in foreground fornendo ad una shell il nome del programma corrispondente – Per creare un processo in background si usa il carattere & alla fine della linea di comando della shell ● Terminazione – Un processo in foreground viene terminato premendo opportune combinazioni di tasti, tipicamente CTRL-C – Un processo in background viene terminato inviandogli un opportuno segnale (SIGKILL, SIGABRT) tramite il comando kill ● Sospensione – Un processo in foreground viene sospeso premendo opportune combinazioni di tasti, tipicamente CTRL-Z – Un processo in background viene sospeso inviandogli un opportuno segnale (SIGSTOP) tramite i comandi kill e stop
  • 87.
    13/11/17 Ercole Palmeri87 Operazioni sui processi ● Continuazione – Si puo forzare la continuazione di un processo sospeso utilizzando i comandi fg e bg – E anche possibile inviare al processo sospeso un opportuno segnale (SIGCONT) tramite il comando kill ● kill -l ● 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX ● Duplicazione – Un processo puo essere duplicato solo attraverso chiamate a funzioni di sistema operativo ● Analisi – E possibile visualizzare alcune informazioni relative ai processi utilizzando i comandi ps, pstree e jobs
  • 88.
    13/11/17 Ercole Palmeri88 Operazioni sui processi ● ps [a][u][x] – Mostra le informazioni piu utili riguardanti i processi in esecuzione ● a Mostra tutte le informazioni ● u Mostra il nome del proprietario dei processi ● x Mostra i processi di tutti gli utenti, non solo i propri – ps aux ● USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ● root 1 0.3 0.3 1376 476 ? S 10:13 0:04 init ● root 2 0.0 0.0 0 0 ? SW 10:13 0:00 [keventd] ● … ● VSZ - Virtual Set Size – La VSZ e una dimensione di memoria assegnata a un processo (programma) durante l'esecuzione iniziale. La memoria Virtual Set Size e semplicemente una quantita di memoria a disposizione per l’esecuzione del processo. ● RSS - Resident Set Size – Contrariamente a VSZ, RSS e una memoria attualmente utilizzata da un processo. Questo e un numero effettivo in kilobyte di quanto RAM utilizza il processo corrente.
  • 89.
    13/11/17 Ercole Palmeri89 Operazioni sui processi ● Jobs – Mostra la lista dei processi sospesi, figli della shell corrente – Ogni processo e individuato da un identificatore detto jobid – Parametro -l Include nella lista anche il process id ● fg [%jobid] – Porta un processo in foreground ● Senza argomenti porta in foreground il processo indicato con il simbolo ‘+’ nella lista prodotta dal comando jobs ● %jobid Porta in foreground il processo identificato dall’identificatore ● jobid, secondo quanto mostrato dal comando jobs ● bg [%jobid] – Porta un processo in background ● Senza argomenti porta in background il processo indicato con il simbolo ‘+’ nella lista prodotta dal comando jobs ● %jobid Porta in background il processo identificato dall’identificatore ● jobid, secondo quanto mostrato dal comando jobs
  • 90.
    13/11/17 Ercole Palmeri90 Comandi di base: Filesystem e processi ● df: mostra lo spazio libero sul disco fisso – Esempio: df -h, visualizzare l'elenco delle partizioni con tutte le informazioni nome, dimensione disponibile... ● free: mostra lo stato della memoria. ● pwd : mostra la directory corrente. ● cat: mostra il contenuto di un file. ● find : cerca un file tra le directory. ● mount: monta un filesystem. ● umount: disattiva un filesystem.
  • 91.
    13/11/17 Ercole Palmeri91 Mount in Red Hat ● Ci sono 3 modi per eseguire il mount di un filesystem – Mount ● mount extmachine:emnteexport emntelocal – eetcefstab ● Per montare una parte NFS da un'altra macchina potete anche aggiungere una linea al file eetcefstab – Autofs ● Il terzo metodo di montaggio di una parte NFS prevede l'utilizzo di autofs. ● Autofs usa il demone automount per gestire i mount point montandoli in modo dinamico.
  • 92.
    13/11/17 Ercole Palmeri92 Mount in Red Hat: istruzione mount ● Per montare un filesystem NFS che si trova su un'altra macchina, si usa il seguente comando: – mount extmachine:emnteexport emntelocal ● Nella macchina locale deve esistere la directory mount point (emntelocal, nell'esempio sopra citato). ● In questo comando, extmachine corrisponde all'hostname del fileserver NFS, emnteexport e il filesystem che extmachine sta esportando e emntelocal e la directory della macchina locale dove si vuole montare il filesystem. ● Una volta eseguito il comando mount (e se abbiamo le autorizzazioni da extmachine), possiamo digitare ls emntelocal per ottenere un elenco dei file in emnteexport su extmachine. ● Per smontare: unmount /mnt/local
  • 93.
    13/11/17 Ercole Palmeri93 Mount in Red Hat: /etc/fstab ● Per montare una parte NFS da un'altra macchina, e possibile anche aggiungere una linea nel file eetcefstab. La linea deve riportare: – l'hostname del server NFS – la directory che viene esportata – la directory che deve contenere il filesystem. – Per modificare il file eetcefstab e necessario essere collegati come root. ● Di seguito e riportata la linea da aggiungere a eetcefstab: ● server:eusrelocalepub epub nfs rsize=8192,wsize=8192,timeo=14,intr ● La macchina deve contenere il mount point epub. Una volta aggiunta la linea nel file eetcefstab, e necessario digitare il comando mount epub al prompt della shell per montare il mount point epub dal server.
  • 94.
    13/11/17 Ercole Palmeri94 Mount in Red Hat: autofs ● autofs e un programma per montare automaticamente dischi in base alle necessita. – Il montaggio avviene nel momento della richiesta di accesso – e viene smontato dopo un periodo di inattivita. ● Autofs consulta il file di configurazione master eetceauto.master per determinare quali mount point sono definiti. Poi avvia un processo di automontaggio con i parametri per ogni mount point. Ogni linea del file di mappa master definisce un mount point e un file di mappa separato che definisce il filesystem da montare sotto uno specifico mount point. – Per esempio, il file eetceauto.mnt definisce i mount point nella directory emntc cio viene definito nel file eetceauto.master. ● Ogni voce in auto.master ha tre campi. Il primo campo e il mount point. Il secondo campo indica la posizione del file di mappa e il terzo campo, opzionale, puo contenere informazioni quali il valore di timeout. – Per esempio, per montare la directory eproject della macchina remota mymachine.host.net sul mount point emntemyproject della vostra macchina, aggiungete a auto.master la riga seguente: ● emnt eetceauto.mnt --timeout 60 – e la linea seguente al file eetceauto.mnt: ● myproject -rw,soft,intr,rsize=8192,wsize=8192 mymachine.host.net:eproject ● Il primo campo contenuto in eetceauto.mnt indica il nome della sotto-directory emnt. Questa directory viene creata in modo dinamico da automount. In realta la directory non dovrebbe esistere sulla macchina client. Il secondo campo contiene opzioni di montaggio quali rw per leggere e scrivere accessi. Il terzo campo e la posizione dell'NFS di esportazione e contiene l'hostname e la directory. ● La directory emnt deve esistere nel filesystem locale. Questo non deve contenere sotto-directory di emnt.
  • 95.
    13/11/17 Ercole Palmeri95 Mount in Red Hat: autofs ● Comandi Autofs – Autofs e un servizio che puo essere avviato dal prompt della shell digitando i comandi seguenti: ● service autofs restart – Per visualizzare i mount point attivi, digitate il seguente comando al prompt della shell: ● service autofs status – Se modificate il file di configurazione eetceauto.master mentre autofs e in esecuzione, dovete dire ai demoni automount di ricaricare autofs digitando al prompt della shell il comando seguente: ● service autofs reload
  • 96.
    13/11/17 Ercole Palmeri96 Comandi di base: Lavorare con file e directory ● Arch: visualizza l’architettura della macchina ● cd: change directory ● du: per conoscere lo spazio su disco occupato da… – Esempio: du -sh M*, visualizzare lo spazio su disco occupato dalle directory che iniziano con la lettera M. s visualizza una riga per ogni elemento, h output in formato leggibile ● sort: visualizza i file ordinandoli
  • 97.
    13/11/17 Ercole Palmeri97 Esercitazione Visualizzare la dimensione delle directory che iniziano con la M, ordinandoli per dimensione (comando su di una unica riga)
  • 98.
    13/11/17 Ercole Palmeri98 Comandi di base du -sh M* | sort -rn r per invertire l’ordinamento n per l’ordinamento numerico
  • 99.
    13/11/17 Ercole Palmeri99 Comandi di base ● cp: copy files – Esempio: cp ebootevmlinuz edevefd0 – Opzioni: ● -b Esegue automaticamente una copia di backup di ogni file di destinazione esistente ● -f Forza la sovrascrittura dei file, senza richiedere interventi da parte dell’utente ● -i Attiva la modalita interattiva, che chiede conferma prima dell’eventuale sovrascrittura di file di destinazione preesistentic il suffisso usato e il classico simbolo della tilde, ~ ● -p Mantiene, se possibile, gli attributi (permessi, ownership, etc.) del file ● -r Permette di attivare la modalita ricorsiva, che permette la copia di directory ● -v Attiva la modalita verbose, che visualizza in output quello che il sistema ha fatto in seguito al nostro comando ● mv: move files – mv file_sorgente destinazione – mv miofile etmp ● rm: remove files ● mkdir: make directory
  • 100.
    13/11/17 Ercole Palmeri100 Comandi di base: tar tar <opzioni> <archivio> <file_eeo_directory_da_archiviare> ● tar: tool in grado di creare archivi contenenti file eeo directory all'interno di un singolo file il quale puo essere compresso utilizzando gli algoritmi di compressione di bzip e gzip. Non e uno strumento concepito per la compressione di file – c (crea un archivio) – f (nome del file archivio) – t (elenca il contenuto di un archivio) – x (estrae un archivio) – v (mostra l'elaborazione) – j (compressione con bzip2) – z (compressione con gzip) ● Esempi: – tar -cvf mio_archivio.tar mio_file – tar -cvf mio_archivio.tar mio_file1 mio_file2 mia_dir1 – tar -tf mio_archivio.tar – tar -xvf mio_archivio.tar – tar -xvf mio_archivio.tar -C etmp – tar -cvfj mio_archivio.tar.bz2 dir1 – tar -xvfj mio_archivio.tar.bz2
  • 101.
    13/11/17 Ercole Palmeri101 Esercitazione Copiare una directory da un punto ad un altro del flesystem utilizzando tar prima per unire i fle e poi per dividerli (comando su di una unica riga)
  • 102.
    13/11/17 Ercole Palmeri102 Esercitazione tar ● tar -c -f fle /usr/mydir ● tar -x -f fle /usr/copia ● tar -c -f fle /usr/mydir | tar -x -f fle /usr/copia
  • 103.
    13/11/17 Ercole Palmeri103 Chmod: permessi file ● chmod: modifca i permessi di accesso di un fle – Es: -rw-rw-r-- 1 user user 150 Mar 19 08:08 foo.txt – Se sei il proprietario del fle (user), o sei connesso come account principale (root), puoi modifcare tutte le autorizzazioni per il proprietario, il gruppo e altri. – Al momento, il proprietario e il gruppo possono leggere e scrivere sul fle. Chiunque al di fuori del gruppo può leggere solo il fle (r--). – Ricorda che le autorizzazioni di fle sono una funzionalità di protezione: ● Ogni volta che consenti a chiunque altro di leggere, scrivere e eseguire i fle, stai aumentando il rischio di manomissione, alterazione o eliminazione del fle. ● Di regola, si dovrebbe concedere solo autorizzazioni di lettura e scrittura a coloro che ne hanno veramente bisogno.
  • 104.
    13/11/17 Ercole Palmeri104 Chmod esercitazione ● Per aggiungere il permesso di scrittura a other – chmod o+w mio.txt – Il comando o+w indica al sistema che si desidera dare agli altri l'autorizzazione al fle mio.txt. – Per controllare i risultati, elencare nuovamente i dettagli del fle. – Cosa vedete ? ● Per rimuovere le autorizzazioni di lettura e scrittura da foo.txt, utilizzare il comando chmod per rimuovere entrambi i permessi di lettura e scrittura. – chmod go-rw foo.txt – Digitando go-rw, stai dicendo al sistema di rimuovere le autorizzazioni di lettura e scrittura per il gruppo e per gli altri dal fle foo.txt. – Cosa vedete ? ● Ora provate a fare lo stesso con i codici in ottale
  • 105.
    13/11/17 Ercole Palmeri105 chown ● chown : cambia il proprietario di un fle – ls -lart tmpfle; – -rw-r-r-- 1 himanshu family 0 2012-05-22 20:03 tmpfle; – tmpfle root di chown; – ls -l tmpfle; – -rw-r-r-- 1 root family 0 2012-05-22 20:03 tmpfle; – Il proprietario del fle è stato cambiato da 'himanshu' a 'root'.
  • 106.
    13/11/17 Ercole Palmeri106 chown ● chown: modifca il gruppo di un fle – Attraverso il comando chown, il gruppo (a cui un fle appartiene) può anche essere modifcato. – ls -l tmpfle – -rw-r-r-- 1 himanshu family 0 2012-05-22 20:03 tmpfle – Chown :friends tmpfle – ls -l tmpfle – -rw-r-r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfle – Il gruppo del fle è cambiato da 'family' a 'friends'. Quindi vediamo che aggiungendo un ':' seguito dal nuovo nome di gruppo, il gruppo del fle può essere modifcato.
  • 107.
    13/11/17 Ercole Palmeri107 chown ● chown: Modifca sia il proprietario che il gruppo – ls -l tmpfle – -rw-r-r-- 1 family root 0 2012-05-22 20:03 tmpfle – chown himanshu:friends tmpfle – ls -l tmpfle – -rw-r-r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfle – Usando la sintassi '<newOwner>: <newGroup>', il proprietario e il gruppo possono essere modifcati in una sola istruzione
  • 108.
    13/11/17 Ercole Palmeri108 chown ● chown: Usando il comando chown sul fle di collegamento simbolico – il collegamento simbolico: – ls -l tmpfle_symlnk – lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfle_symlnk -> tmpfle ● il collegamento simbolico 'tmpfle_symlink' collega il fle 'tmpfle'. ● Consente di vedere cosa succede se il comando chown viene rilasciato in un collegamento simbolico: – chown root:friends tmpfle_symlnk – ls -l tmpfle_symlnk – lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfle_symlnk -> tmpfle – ls -l tmpfle – -rw-r-r-- 1 root friends 0 2012-05-22 20:03 tmpfle ● Quando il comando chown è stato eseguito sul link simbolico per modifcare il proprietario e il gruppo, allora è il referente del collegamento simbolico cioè 'tmpfle' e recepire la modifca. Questo è il comportamento predefnito del comando chown. ● Utilizzando l’opzione -h, la modifca ha effetto sul link
  • 109.
    13/11/17 Ercole Palmeri109 chown ● Se vogliamo modifcare il proprietario solo se un fle è di proprietà di un determinato utente, allora andremo ad utilizzare l’opzione -from. Cioè puoi modifcare il proprietario di un fle solo se quel fle è già proprietario di un determinato proprietario. – ls -l tmpfle – -rw-r-r-- 1 root friends 0 2012-05-22 20:03 tmpfle – chown -from=guest himanshu tmpfle – ls -l tmpfle – -rw-r-r-- 1 root friends 0 2012-05-22 20:03 tmpfle – chown --from=root himanshu tmpfle – ls -l tmpfle – -rw-r-r-- 1 himanshu friends 0 2012-05-22 20:03 tmpflee ● Allo stesso modo possiamo modifcare il gruppo
  • 110.
    13/11/17 Ercole Palmeri110 chown ● Possiamo copiare le impostazioni del proprietario / gruppo da un fle all'altro, lo facciamo utilizzando l’opzione "-reference". – ls -l fle – -rwxr-xr-x 1 family himanshu 8968 2012-04-09 07:10 fle – ls -l tmpfle – -rw-r-r-- 1 root family 0 2012-05-22 20:03 tmpfle – chown --reference=fle tmpfle – ls -l tmpfle – -rw-r-r-- 1 family himanshu 0 2012-05-22 20:03 tmpfle
  • 111.
    13/11/17 Ercole Palmeri111 chown ● Modifcare il proprietario / gruppo dei fle percorrendo le directory in modo ricorsivo. Possiamo farlo utilizzando l’opzione "-R". – ls -l linux / linuxKernel – -rw-r-r-- 1 root friends 0 2012-05-22 21:52 linux / linuxKernel – ls -l linux / redhat / rh7 – -rw-r-r-- 1 root friends 0 2012-05-22 21:52 linux / redhat / rh7 – chown -R himanshu: family linux / – ls -l linux / redhat / rh7 – -rw-r-r- 1 himanshu family 0 2012-05-22 21:52 linux / redhat / rh – ls -l linux / linuxKernel – -rw-r-r-- 1 himanshu family 0 2012-05-22 21:52 linux / linuxKernel ● Quindi vediamo che dopo aver controllato il proprietario / gruppo di tutti i fle nella directory 'linux' e le sue due sottodirectory 'redhat'. Abbiamo emesso il comando chown con l'opzione "-R" per modifcare sia il proprietario che il gruppo. Il comando è riuscito e il proprietario / gruppo di tutti i fle è stato modifcato con successo.
  • 112.
    13/11/17 Ercole Palmeri112 sistema ● halt: chiude il sistema. ● reboot: riavvia il sistema. ● hostname: mostra e cambia il nome dell'host. date : mostra la data. ● gzip : comprime e decomprime fle .gz. ● more : separa l'output in piu' pagine (anche less). ● reset : resetta il terminale alle impostazioni iniziali. ● lynx : browser web solo testo. ● zip e unzip : comprime e decomprime fle .zip.