SlideShare uma empresa Scribd logo
1 de 134
Baixar para ler offline
2/136




Lezione 1 - Unix: Definizioni e Storia
Def: Sistema operativo
                                                                    3/136




 Collezione di programmi per il coordinamento
  delle attivit` e delle componenti funzionali
               a
                    di un calcolatore
    Le attivit` possono venir generate a seguito dell’interazione
              a
                      operatore/elaboratore
Collezione di programmi
                                   4/136
• Kernel o Nucleo del S.O.
• Driver
• Gestore degli accessi
• Gestore dei protocolli di rete
• Programmi di utilit`
                     a
• Compilatori
• Librerie
•...
Attivit` funzionali
       a
                                5/136

• elaborazione numerica
• stampe e salvataggi
• scrittura di applicativi
• interazione con applicativi
• attivit` ludica
         a
•...
Coordinamento
                                     6/136

• Gestione del tempo di processore
• Condivisione d’accesso
• Mutua esclusione
• Serializzazione
• Controllo permessi
•...
7/136
Unix - storia
                                                           8/136

 Nasce negli anni ’70 alla Bell Labs (Thompson, Ritchie)
 come sistema proprietario in contrapposizione
                    alla politica di
                       MULTICS
   (Multiplexed Information and Computing Service)

   Gira inizialmente di PDP-7 (assembler)
 Poi su PDP-11 viene riscritto in C (1973) da
                Dennis Ritchie
Unix - storia (2)
                                                 9/136

 In seguito ad un accordo del 1953 AT&T non
  poteva commercializzare prodotti informatici
                       ⇓
 Unix viene offerto gratutitamente (no support)
                       ⇓
       Viene portato su altre architetture
Unix - storia (3)
                                             10/136

        AT&T nel 1983 estende Unix
                     ⇓
                 System V


   Alla Berkeley Unix viene portato su VAX
                     ⇓
        Berkeley System Distribution
Unix - inquadramento
                           11/136

 Sistema operativo:
• multitasking grazie a:
  – time sharing
  – contest switching
• multiuser con:
  – superuser
  – utenti
  – gruppi
Unix - inquadramento (2)
                                                12/136

• portabile
  – scritto in linuguaggio C
  – implementa una serie di funzioni standard
• con funzionalit` di rete
                 a
  – client/server
  – peer2peer
  – 3-Tier
Progetto POSIX
                                                            13/136
       Portable Operating System Standard
                       for
             Computer Environment
• Standard IEEE
• Detta i requisiti di compatibilita con lo standard Unix
• si suddivide in:
   – POSIX.1 (IEEE 1003.1 ) ⇒ Kernel
   – POSIX.2 (IEEE 1003.2 ) ⇒ Interfaccia, utilities
   – POSIX.3 (IEEE 1003.3 ) ⇒ Tools di valutazione
Linux & Open Source
                                       14/136



progetto GNU (GNU is NOT UNIX)
FSF: 1985 - Richard Stallman (MIT)
 progetto Linux
Linux on Minix: 1991 - Linus Torvald
 progetto Minix
Minux: Prof. Tanenbaum
 progetto GPL (GNU Public License)
GNU/Linux + Debian
Il kernel
                                        15/136
 Gestisce:
• accesso al filesystem
• scheduling
• accesso ai protocolli di rete
 Fornisce:
• API per l’accesso ai dispositivi HW
• virtualizzazione della memoria
• strumenti di mutua esclusione
Il filesystem Unix
                                                                       16/136
 Il filesystem ` il complesso sistema che i sistemi operativi moderni
              e
 utilizzano per organizzare le entit` di memorizzazione permanente
                                    a




   Poich´ in Unix ogni cosa ` un file il filesystem ` fondamentale
        e                   e                     e
            La struttura logica del FS Unix ` un albero
                                            e
     La struttura fisica del FS Unix ` fatta di blocchi e inode
                                    e




                Il filesystem Unix inizia da root (/)
File ordinari
                                                   17/136

 Rientrano in questa categoria l’80% dei file di
uso comune. Possono avere un nome lungo fino
  a 255 caratteri, che pu` iniziare e contenere
                          o
qualunque lettera o numero, degli spazi, i segni
                di interpunzione.


[oratio:~] andrea% .,asdf. sdfjk,234_ad:

 ` un nome di file valido
 e
File ordinari (2)
                                            18/136

 Bisogna stare attenti solo al fatto che:
• il primo carattere non sia un .
• il primo carattere non sia un -
• il nome non contenga il ; $
• il nome non contenga |, &
File ordinari (3)
                                                                               19/136

  Si possono creare con:
 • touch nomefile
 • attraverso ridirezione dell’output
 • con un editor (VI, Emacs)
  Si riconoscono listando la directory con ls -l
drwxr-xr-x   42   andrea   staff       1428 Nov 4 21:19 ex-Progetti-oratio
drwxr-xr-x   29   andrea   staff        986 Nov 4 21:19 ex-home-oratio
-rw-r--r--    1   root     staff   150266148 Sep 26 18:10 ex-root-oratio.tgz
-rw-r--r--    1   andrea   staff      37326 Oct 17 09:29 httpd.conf
Directory
                                                                               20/136

 Hanno la stessa caratteristica dei file, ma il loro
      nome finisce sempre con slash (/).
 Ovviamente possono contenere file o directory

Si riconoscono listando la directory con ls -l
drwxr-xr-x   42   andrea   staff       1428 Nov 4 21:19 ex-Progetti-oratio
drwxr-xr-x   29   andrea   staff        986 Nov 4 21:19 ex-home-oratio
-rw-r--r--    1   root     staff   150266148 Sep 26 18:10 ex-root-oratio.tgz
-rw-r--r--    1   andrea   staff      37326 Oct 17 09:29 httpd.conf
File nascosti?
                                                                                21/136

Tutti i file o le directory che iniziano con il punto
 non sono visibili con il comando ls a meno di
             non usare il parametro -a
[oratio:~] andrea% ls -la
drwxr-xr-x   42   andrea   staff       1428 Nov 4 21:19 .
drwxr-xr-x   29   andrea   staff        986 Nov 4 21:19 ..
-rw-r--r--    1   root     staff   150266148 Sep 26 18:10 .ex-root-oratio.tgz
-rw-r--r--    1   andrea   staff      37326 Oct 17 09:29 .httpd.conf
-rw-r--r--    1   andrea   staff      37326 Oct 17 09:29 .bashrc
File speciali - mount point
                                                   22/136
 Non abbiamo degli identificatori standard come
   in DOS per i dispositivi di memorizzazione


     Possiamo far corrispondere i dispositivi di
        memorizzazione con delle directory
e.g.
Floppy disk 1 (A:) ⇒ /mnt/floppy
Partizione primaria del primo HD (C:) ⇒ /
Partizione secondaria del primo HD (D:) ⇒ /home
File speciali - mount point (2)
                                                              23/136

 Alcuni mount point sono previsti dal sistema:
• scritti nel file /etc/fstab
• verificabili attraverso il comando mount
 Avendo opportuni privilegi se ne possono montare di propri
• dischetti ⇒ /dev/fdn
• partizioni ⇒ /dev/hdcn
• immagini ISO ⇒ /dev/loopn
File speciali - altri
                        24/136

 Altri tipi di file:
• socket
• pipe
• link
• devices
Le directory importanti
                                                                               25/136

 Se ci si fa un giretto fuori dalla propria home si
            scopre un mondo vastissimo
Applications              Encode                    automount     resources
Applications (Mac OS 9)   Encode.pm                 bin           rr
Cartella Sistema          Library                   cores         sbin
Desktop                   Network                   dev           sw
Desktop (Mac OS 9)        Previous Systems          etc           temporaneo
Desktop DB                System                    mach          tmp
Desktop DF                Temporary Items           mach.sym      usr
Desktop Folder            TheVolumeSettingsFolder   mach_kernel   var
Developer                 Trash                     opt
Documenti                 Users                     private
Elimina al Riavvio        Volumes                   res
Le directory importanti
                                               26/136

 Lo standard POSIX prevede la presenza delle
         seguenti directory di sistema
boot           bin           dev
etc            home          lib
opt            sbin          usr
var            tmp

usr/local                    var/log
Il contenuto di etc
                                                    27/136
  Contiene:
• file di configurazione (rete, sicurezza, servizi)
• script e directory di runlevel
• file di password e gruppi
• file e directory di crontab
• file di default
Il contenuto di bin
                                           28/136

 Contiene i comandi di base del sistema:
• cp, mv, ls, rm,. . .
• echo, cat, . . .
• kill, stat,. . .
• le shell
Il contenuto di sbin
                                                   29/136

 Contiene i comandi specifici di pseudo-amministrazione:
• utility per la rete (setup, probe)
• utility per i dischi
• utility per il logging
• utility per il boot
Il contenuto di opt
                                                     30/136

 Directory di nuova fattura:
• tende a sostituire usr/local
• ci vanno i programmi che nella loro folder hanno
  una gestione non conforme allo standard per
  eseguibili, configurazioni e manuali
• Java, . . .
Il contenuto di usr
                                                31/136
 Directory storica di Unix, contiene:
• il sistema X11
• le utility evolute per la configurazione di:
   – rete
   – stampanti
   – dischi
   – librerie
   – utenti
   – sicurezza
Il contenuto di usr/local
                                                  32/136

 Directory repository per i programmi locali
    All’inizio Unix fu pensato con filesystem
                distribuito/remoto



 Questa directory era il punto di montaggio dei
        dispositivi locali alla macchina
     Ha in s` tutta la struttura di / (root)
            e
Il contenuto di dev
                                               33/136

 Directory dei dispositivi virtuali:
• dischi e partizioni
• porte seriali, parallele, ausiliari, . . .
• frame-buffer, video, ram, . . .
• terminali seriali e virtuali
• standard input, output e error
• zero, null e random
Il contenuto di mnt
                                              34/136

   Directory che contiene i mount-point dei
             dispositivi removibili:
• floppy
• cdrom
• secure digital & flash card
• partizioni DOS/Windows :-)
non ci perdiamo... (pwd)
                                                         35/136

  Il filesystem Unix ` molto vasto, ma con pwd
                    e
    possiamo sempre conoscere il path attuale
Comando:
[Computer] andrea% pwd
/System/Library/StartupItems/Portmap/Resources


Attenzione ai link simbolici poich´ vengono risolti !!
                                  e
...path della propria homedir
                                                      36/136

   Viene deciso dall’amministratore durante la
   creazione dell’utenza insieme con la shell di
                      default
root:*:0:0:System Administrator:/var/root:/bin/tcsh

      Il default ` /home/<nomeutente>
                 e



  Si pu` raggiungere attraverso cd, ~ o $HOME
       o
Il comando mkdir
                                                 37/136

Come in DOS server per creare una DIRECTORY
[Computer] andrea% mkdir Resources/Tezzuia
/System/Library/StartupItems/Portmap/Resources



Attenzione a guardar bene dove siamo!!
Il comando rm -r
                                                    38/136

Server per cancellare ricorsivamente il contenuto
              di una DIRECTORY
 Comando:
[Computer] andrea% rm -r Portmap
/System/Library/StartupItems/Portmap/Resources


Attenzione al PATH, possiamo cancellare TUTTO!!
Il comando ls -l
                                                   39/136
Server per listare la DIRECTORY mostrandi tutti
                     gli attributi
          Non visualizza i file . (punto)


  Per visualizzare i file speciali ci mettiamo il
                 parametro -a
 Comando:
[Computer] andrea% ls -l Portmap
/System/Library/StartupItems/Portmap/Resources
Il comando ls -l (2)
                                                                           40/136

Server per listare la DIRECTORY mostrandi tutti
                     gli attributi
total 1116
-rw-r--r--   1   andrea   staff    33783   Nov    4   09:14   back.jpg
-rw-r--r--   1   andrea   staff    36334   Nov    4   09:14   back2.jpg
-rw-r--r--   1   andrea   staff    10933   Nov    4   09:14   bg.jpg
-rw-r--r--   1   andrea   staff    42173   Nov    4   09:14   d12.jpg
-rw-r--r--   1   andrea   staff    11161   Nov    4   10:49   img4.gif
-rw-r--r--   1   andrea   staff   116144   Nov    4   10:54   img4.jpg
-rw-r--r--   1   andrea   staff     5691   Nov   11   22:03   slide.out
-rw-r--r--   1   andrea   staff   663403   Nov   11   22:03   slide.pdf
-rw-r--r--   1   andrea   wheel    29397   Nov   11   22:05   slide.tex
-rw-r--r--   1   andrea   wheel    29167   Nov   11   22:03   slide.tex~
Il comando ln
                                                     41/136

                Crea dei link ai file
 Due tipi di link:
• hard link - (ogni file ` un hard link)
                        e
• soft link - (puntatori, il kernel sostituisce la
  destinazione)
Opzioni:
-s : link simbolici
Il comando touch
                                                        42/136
Cambia la data di accesso e modifica di un file
[Computer] andrea% touch Tezzuia.file
[Computer] andrea% ls -l Tezzuia.file
-rw-r--r-- 1 andrea staff 0 Nov 11 22:22 Tezzuia.file


Riproviamo dopo 2 minuti !!
Il comando chmod
                                                       43/136

   Server per cambiare gli attributi di un file o
                    directory
0400    read by owner
0200    write by owner
0100    execute (or search for directories) by owner
0070    read, write, execute/search by group
0007    read, write, execute/search by others

r = read , w = write ,   x = execute
u = user , g = group ,   o = other ,   a = all
Il comando chown
                                                      44/136

  Server per cambiare i proprietari di un file o
                   directory
 Comando:
[Computer] andrea% chown [-R] <user>.<group> <file>


e.g.
[Computer] andrea% chown -R nobody.nobody file
Il comando cp -ra
                     45/136

 Guardare il man!!
Il comando mv
                     46/136

 Guardare il man!!
Il comando mount
                     47/136

 Guardare il man!!
Il comando wc
                                                   48/136

 Riporta in standard output il numero di parole,
       byte, linee che compongono il file
 Opzioni:
-l : numero di linee
-c : numero di caratteri
-w : numero di parole
Il comando file
                                                      49/136

              Restituisce il tipo di file
  Il nome dei file pu` contenere qualsiasi carattere
                    o
(anche il punto), non esiste il concetto di esten-
sione per identificare il tipo di file.
Il comando file confronta il contenuto del file con
un database (magic.mime) e restituisce il tipo di
dati contenuti nel file.
Il comando find
                                                    50/136
    Serve per ricercare un file all’interno del
                    filesystem
Realizza la ricerca discendendo ricorsivamente le
  directory a partire da quella indicata come
                    parametro.
    Individua in questa passeggiata i file che
soddisfano l’espressione immessa come parametro
  L’espressione ` formata da PRIMARIES ed
                e
                  OPERANDI
Il comando find (2)
                                                                      51/136
 PRIMARIES importanti:

• -delete : cancella tutti i file trovati
• -empty : ci dice se il file attuale vuoto
• -iname <pattern> : pattern non case-sensitive
• -links <n> : ritorna i file che hanno n links
• -ls : riporta l’output in formato del comando ls -l
• -nogroup : riporta i file che non appartengono a gruppi conosciuti
• -nouser : riporta i file che non appartengono a utenti conosciuti
• -perm <nnnn> : riporta i file che hanno il bit dei permessi <nnnn>
Il comando cat
                                                                                      52/136

     Non serve solo a visualizzare, ma anche a
                concatenare i file
  e.g.
bash-2.05a$ cat ilfile sefile > dufile
Contatena il contenuto di ilfile e di sefile e scrive il risultato in dufile


e.g.2
bash-2.05a$ cat ilfile sefile >> dufile
Contatena il contenuto di ilfile e di sefile e appende il risultato alla fine di dufile
Il comando cat (2)
                                               53/136

 Le opzioni pi` interessanti sono:
              u
• -n: numera le linee
• -b: non numera le linee vuote
• -s: toglie le linee vuote consecutive
• -v: visualizza i caratteri non stampabili
• -t: visualizza i caratteri TAB come CTRL-I
Comandi more e less
                                                  54/136

   Vengono utilizzati quando l’output supera
    l’ampiezza della zona di visualizzazione

Possono essere utilizzati in pipe all’output...
bash-2.05a$ cat ilfile dufile | less

... o con parametro il nome di un file
bash-2.05a$ more ilfile
Comandi head e tail
                                                    55/136

 Vengono utilizzati per selezionare parti del file



   head visualizza le prime 10 righe del file
      (parametro) o dell’output (pipe)



   tail visualizza le ultime 10 righe del file
      (parametro) o dell’output (pipe)
Comandi head e tail (2)
                                                  56/136

 Opzioni di head:
• -n: decide il numero di linee da visualizzare
Comandi head e tail (3)
                                                     57/136

 Opzioni importanti di tail:
• -f: non esce dalla visualizzazione aspettando
  ulteriori linee
• -n: visualizza le ultime n righe
• -n +: visualizza a partire dall’n-esiama riga
• -b: visualizza gli ultimi n blocchi da 512 bytes
• -c: visualizza gli ultimi n bytes
• -r: utilizza l’ordine inverso di visualizzazione
Il multitasking - time sharing
                                                       58/136

Metodo di ripartizione del tempo di elaborazione
in cui un componente detto scheduler si occupa
  di attivare i processi in base alla priorit` delle
                                             a
      code di attesa in cui essi sono inseriti
 Si differenzia dal multitasking cooperativo per il
fatto che non sono i processi ad avere il controllo
 sul tempo di esecuzione a loro disposizione, ma
  esiste un controllore centralizzato per tutto il
                      sistema
Concetto di processo
                                                                            59/136

 Un’entit` di elaborazione unitaria, generato da
         a
   un programma (eventualmente compilato),
ovvero da un metodo simbolico con cui vengono
  espressi gli algoritmi che un processore deve
 eseguire per elaborare dei risultati a partire da
                 alcuni dati iniziali.
 In Unix ogni processo ` di propriet` di un singolo utente (colui che lo
                       e            a
ha lanciato), ha una priorit`, una sua area di memoria assegnata e pu`
                            a                                           o
      eventualmente scambiare messaggi e dati con altri processi
Concetto di thread
                                                     60/136

  Unit` logica di elaborazione all’interno di un
      a
processo (e.g. stampa, calcolo, accesso alla rete,
                      etc..)
Ogni thread condivide con gli altri (dello stesso
processo) l’area di memoria assegnata e non `   e
quindi necessario avviare procedure di scambio
 messaggi con memoria condivisa fra processi
       Viene evitato il contest switching
Processi di sistema
                                                       61/136
   Esistono particolari tipi di processi che sono
attivati dal sistema all’avvio e vivono per tutto il
  tempo in cui ` attivo il sistema detti demoni
                 e

Gestiscono:
• servizi di rete
• azioni automatizzate e temporizzate
• controlli sullo stato del sistema
• accessi locali
Processi utente
                                                      62/136
 Fanno parte di questa classe tutti i processi che
derivano dall’invocazione di comandi dalla shell e
    tutti quelli attivati da particolari condizioni
           (cron e post-login/pre-logout)
                   Ogni utente pu`:o
 • sospendere
 • uccidere :-(
 • osservare
 • riavviare
Il comando ps
                                                                   63/136

  Un processo ` identificato dal suo nome e dal
              e
             suo Process-ID (PID)
Attraverso il comando ps ` possibile visualizzare
                            e
               lo stato dei processi
Opzioni:
 • -a: mostra tutti i processi
 • -c: mostra solo il comando e non il path
 • -u: mostra informazioni sull’utente proprietario del processo
 • -x: non mostra le informazioni sulle linee di terminale
Il comando top
                                                    64/136

    Mostra le statistiche sull’uso del sistema
   Nelle statistiche ` previsto lo stato di ogni
                      e
                  singolo processo
I processi sono ordinati per quantit` di tempo di
                                    a
                 CPU occupato
       Schiacciando la M il sistema ordina la
visualizzazione per quantit` di memoria occupata
                            a
I segnali
                                                  65/136
 `
 E possibile inviare dei segnali ad un processo
Attraverso la tastiera:
• CTRL-C : KILL
• CTRL-Z : STOP
Attraverso il comando kill:
• -9 o -KILL
• -2 o -INT
• -1 o -HUP
Foreground & Background
                                                     66/136

Sono le due modalit` di esecuzione in cui si pu`
                   a                           o
             trovare un processo
I processi che sono interattivi non possono essere
                  mandati in bg
  `
  E possibile cambiare la modalit` di esecuzione
                                   a
 con il comando bg dopo aver inviato un segnale
    di sospensione ad un processo (CTRL-Z) e
 ritornare alla modalit` interattiva attraverso fg
                       a
Il comando jobs
                                                    67/136

Il comando permette di visualizzare quali siano i
      processi in esecuzione bg o sospesi
Il comando fg
                68/136
Il comando bg
                69/136
Il comando &
               70/136
Il comando kill
                                                    71/136

Invia un segnale ad un processo attraverso il suo
                      PID
 Prima ricerco il PID del processo a cui voglio
          inviare il segnale (ps), poi:
 kill -9 <PID>
Il comando killall
                                                   72/136

 Invia un segnale ai processi attraverso il loro
                    NOME
Nel nome del processo non va incluso il PATH:
killall -9 <Process-NAME>
Il filesystem /proc
                                                      73/136
  Tutto ` un file, quindi anche l’ambiente e le op-
          e
zioni dei processi devono poter essere acceduti co-
me file
Il filesistem speciale /proc contiene una directory
per ogni processo (identificata dal PID): in ogni
directory:
 • cmdline
 • cwd
 • environ
Il filesystem /proc (2)
                         74/136
• exe
• fd/
• maps
• mem
• mounts
• root
• stat e statm
• status
Il filesystem /proc (3)
                                                      75/136
  In Linux il filesystem proc contiene anche alcuni
file ed alcune directory speciali che permettono di
controllare a run-time il funzionamento del kernel.
Per esempio:
 • /proc/cpuinfo
 • /proc/sys/net/ipv4/ip forward
 • /proc/sys/net/kernel/modprobe
Le opzioni possono anche essere manipolate con
sysctl
Moduli
                                                       76/136

  Anche nei kernel monolitici come quello di Unix
e di Linux alcuni componenti possono essere inse-
riti e rimossi durante il funzionamento.
In questo modo ` possibile risparmiare memoria
                   e
dedicata al kernel senza doverlo ricompilare al sor-
gere di una nuova esigenza.
Per motivi legati alla gestione di memoria, per`, o
l’uso di moduli riduce leggeremente le prestazioni
del sistema.
Moduli (2)
                                                        77/136

 Alcuni comandi per gestire i moduli
• insmod
• modprobe
• rmmod
• modinfo
Nei kernel recenti ` stata aggiunta la possibilit` di
                   e                             a
gestire automaticamente i moduli attraverso il file
/etc/modules.conf oppure l’utility hotplug.
La Shell
                                                         78/136

• assomiglia al prompt del DOS :-)
• stabilisce un’interfaccia fra Utente e S.O.
  – interpreta i comandi immessi da tastiera
  – restituisce il valore di ritorno delle applicazio-
    ni
• fornisce un linguaggio di programmazione
Diverse esigenze ⇒ diverse shell
                                          79/136
• Bourne Shell (Steve Bourne - MIT)
• Korne Shell (David Korne - Bell Labs)
• C-Shell (sea-shell)
• a-Shell (ascetic shell)
• tcshell
    (C-shell free)
• Zshell
    (Korne shell free)
Regole di base
                                                                                   80/136
• Qualsiasi SHELL di Unix ` in grado di distinguere le maiuscole dalle minuscole
                          e
• I comandi si terminano con un ENTER
• I comandi possono essere pi` lunghi di una riga
                                 u
• I parametri dei comandi in Unix sono preceduti dal meno (-)
 • I nomi delle variabili d’ambiente sono MAIUSCOLI
 • Per ottenere il valore delle variabili d’ambiente si usa il prefisso $
 • Negli script di shell se si vuole proseguire oltre una riga il comando
   ` buona norma mettere un backslash alla fine di ogni riga ()
   e
Comandi
                                81/136
 Comando DOS     Comando Unix
 ATTRIB (set)    chmod
 ATTRIB (get)    ls -l
 DIR             ls
 COPY            cp
 MOVE            mv
 XCOPY           cp -r
 MORE            less | more
 CHKDSK (stat)   df
Comandi (2)
 DELTREE      rm -r
 DEL          rm              83/136


 FIND         grep
 SORT         sort
 DATE (get)   date
 DATE (set)   date -s
 TIME (get)   date
 TIME (set)   date -s
 CLS          clear | reset
 TYPE         cat
 VER          uname -a
Comandi (3)
                                   84/136
 MD                mkdir
 CD (set)          cd
 CD (get)          pwd
 RD                rm -ry
 Comandi di Help   man & apropos
grep
                                                               85/136

  Il comando grep stampa le linee che soddisfano il pattern

Comando:
grep chino

inserire delle parole e vedere se si riesce a farle stampare
  dare CTRL-C per terminare
grep (2)
                                                                   86/136

 Opzioni importanti:
• -i: non fa differenza fra maiuscole e minuscole
• -r: ricerca ricorsivamente in [sotto]directory
• -l: da solo il nome dell’entit` in cui si ` trovato il pattern
                                a           e
• -v: inverte il match (NOT pattern)
• -c: conta le linee che corrispondono il pattern
Esempio: seleziono le directory
                                                                           87/136
 Voglio selezionare tutti i file che hanno nel loro nome il carattere “/”


               metto in pipe (concateno)
                     l’output di ls
                           con
                    l’input di grep

Comando:
bash-2.05a$ ls -F | grep /
Input e output
                                                88/136

 Unix ha a disposizione 4 operatori standard:
• | (pipe o concatenamento)
• > (output verso file)
• < (input da file)
• >> (output in aggiunta ad un file)
Esempio - Redirezione verso un file
                                                                           89/136
Alla fine dell’esercizio dobbiamo avere la lista delle subdirectory in un
                                 file
 Comando:
bash-2.05a$ ls -F | grep / > ilfile

Come possiamo sapere se il file contiene quello
che volevamo?

Nel frattempo mettiamo in un altro file tutto quel-
lo che sta nella home tranne le sottodirectory
Soluzione
                                                                 90/136
 Utilizziamo il comando cat per visualizzare ilfile

Comando:
bash-2.05a$ cat ilfile

Utilizziamo il parametro -v di grep per invertire la selezione

Comando:
bash-2.05a$ ls -F | grep -v / > sefile
Prompt della shell
                                                        91/136

  Quando una shell attende ed esegue i comandi
in maniera interattiva.
La disponibilit` a ricevere comandi viene eviden-
                a
ziata da un messaggio di invito o prompt.
Prompt composto da simboli e informazioni utili
all’utente per tenere d’occhio il contesto in cui sta
operando.
Esempio prompt
                                92/136
[luigi@lg600 luigi]$ pwd
/home/luigi
[luigi@lg600 luigi]$ cd /tmp
[luigi@lg600 /tmp]$ echo $PS1
[u@h W]$
[luigi@lg600 /tmp]$ whoami
luigi
[luigi@lg600 /tmp]$ hostname
lg600.gangitano.it
[luigi@lg600 /tmp]$ pwd
/tmp
Storico dei comandi
                                                     93/136

  Bash mantiene uno storico dei comandi utilizzati
dall’utente.
Lo storico NON si interrompe alla fine di una ses-
sione o con un reboot (´ su file).
                        e
Freccette (s`,gi`) per sfogliarlo
             u u
CTRL-R+[qualche carattere] per cercare all’inter-
no dello storico
CTRL-R cerca ancora
Altri tasti utili
                                         94/136

 Andare all’inizio della riga - CTRL-A
Andare alla fine della riga - CTRL-E

CANC - CTRL-D
(spesso CANC ´ mappato male)
             e
Alias
                                                        95/136

  Bash permette la definizione di nuovi comandi in
forma di alias di altri comandi (o serie di comandi).

alias - elenca gli alias esistenti
alias nome=”comando con tutti i parametri”

alias dir=ls –color
Serie di comandi
                                                      96/136
  ´
  E possibile dare pi` comandi da eseguire in serie
                     u
separando gli elementi della lista con dei ;
Esempio
$ mv pippo.ps pluto.ps;mv pluto.ps pippo.ps

 Equivale a:
$ mv pippo.ps pluto.ps
$ mv pluto.ps pippo.ps
Ambiente
                                                  97/136

 Ogni programma in funzione nel sistema ha un
proprio ambiente definito in base a delle varia-
bili di ambiente.
Variabili d’Ambiente
                                                      98/136

  Le variabili d’ambiente sono un mezzo ele-
mentare e pratico di configurazione del sistema: i
programmi, a seconda dei loro compiti e del lo-
ro contesto, leggono alcune variabili, e in base al
contenuto si comportano.

Esempio:
la variabile PATH
PATH
                                                      99/136
  La variabile PATH indica tutte le directory dove
la shell deve andare a guardare per trovare dei file
eseguibili (i programmi per capirci)
´
E una variabile a tuti gli effetti:
$ echo $PATH
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr
/X11R6/bin:/usr/games:/home/luigi/bin:/usr/sbin
:/usr/X11R6/bin:/usr/games
PATH e la directory corrente
                                                     100/136

  La directory corrente normalmente NON viene
inclusa nella variabile PATH
Non ´ molto sicuro, e non dovrebbe mai essere
      e
“prima” di quelle canoniche.
Si pu` aggiungere in fondo a PATH, o ovviare cos`
     o                                          ı:
./nome_file_eseguibile
Ambiente (2)
                                                     101/136

  L’ambiente consegnato a ogni programma che
viene messo in esecuzione, controllato dalla shell
che pu` assegnare ambienti diversi a programmi
        o
diversi.
La shell pu creare, modificare e leggere queste
variabili,e utile per la realizzare file script.
Gestione Variabili in BASH
                                                   102/136
  Variabili di shell
Una variabile definita quando contiene un valore,
anche se vuoto.
L’assegnamento di un valore si ottiene con una
dichiarazione del tipo:
nome_di_variabile=[valore]
 Esempio:
[luigi@lg600 luigi]$ pluto=cane_di_topolino
[luigi@lg600 luigi]$ echo $pluto
cane_di_topolino
Esportazione Variabili
                                                         103/136

  Le variabili di shell hanno validit limitata all’am-
bito della shell stessa.
I comandi interni alla shell stessa sono al corrente
di queste variazioni mentre i programmi che ven-
gono avviati non ne risentono.
Per i programmi esterni le variabili devono es-
sere esportate. L’esportazione delle variabili si
ottiene con il comando interno export.
Esportazione Variabili (2)
                                                104/136
 Esempi
     $ PIPPO="ciao"
     $ export PIPPO
 Crea la variabile PIPPO e quindi la esporta.
     $ export PIPPO="ciao"

 In un colpo solo.
Espansione/Sostituzione
                                                      105/136

  Come gi` si intuiva da alcuni comandi che ab-
           a
biamo visto la shell, prima di lanciare i programmi
e/o comandi fa delle modifiche alla stringa che noi
gli passiamo, meccanismo noto come espansione
Passi dell’espansione
                                        106/136

1. parentesi graffe;
2. tilde ;
3. parametri e variabili;
4. comandi;
5. aritmetica (da sinistra a destra);
6. suddivisione delle parole;
7. percorso o pathname.
Espansione della tilde
                                                      107/136
  Se una parola inizia con il simbolo tilde ( ) in-
terpreta quello che segue, fino alla prima barra
obliqua (/), come un nome-utente.
E sostituisce questa prima parte con il nome della
directory personale dell’utente stesso.
˜ da sola sottointende l’utente attuale
Esempi
          $ cd ~
         $ cd ~tizio/public_html
Espansione di parametri e variabili
                                                      108/136

  Gi` visto
    a
sostituzione del parametro o della variabile con il
suo contenuto.
Esempio
[luigi@lg600 luigi]$ pippo=PIPPO
[luigi@lg600 luigi]$ echo $pippo
PIPPO
Sostituzione comandi
                                                   109/136

 La sostituzione dei comandi consente di utiliz-
zare quanto emesso attraverso lo standard output
da un comando. Ci sono due forme possibili:
$(comando)

‘comando‘
Apici “al contrario” altgr+apice
Per ora Standard Output = testo riportato come
risultato dal comando
Espansione di percorso
                                                      110/136

  I simboli *, ? e [ vengono intepretati ed espansi
in serie di stringhe (che indicano percorsi)
Vediamo solo il pi` importante: *
                    u
Corrisponde ad una qualsiasi stringa
  quindi se siamo in una directory con questi file:
paperino paperone paperoga minnie topolino

rm -f pape* -> rm -f paperino paperone paperoga
Caratteri di protezione
                                                   111/136

  A volte magari abbiamo bisogno di scrivere ef-
fettivamente caratteri come:
$ * { [ ... }
Esistono 3 modalit`:
                  a
1. Escape
2. Apici singoli
3. Apici doppi
Escape
                                                        112/136
  La barra obliqua inversa () rappresenta il ca-
rattere di escape. Serve per preservare il signifi-
cato letterale del carattere successivo, cio` evitare
                                            e
che venga interpretato diversamente da quello che
veramente. Esempio
ls -l $fff

 3B cerca di leggere il file che si chiama proprio
$fff
Escape (2)
                                                    113/136
 Usato da solo (quindi con uno spazio dopo) serve
per continuare una linea (nonostante si vada a
capo) Esempio
$ ls -l 
supercalifragilischespiralidoso

 viene interpretato come un unico comando su
una linea
Apici Singoli
                                                       114/136

  Racchiudendo dei caratteri tra apici semplici (’)
si mantiene il valore letterale di questi caratteri.
Un apice singolo non pu essere contenuto in una
stringa del genere. Esempio
$ echo ’$0 $1  ... restano "inalterati".’
$0 $1  ... restano "inalterati".
Apici Doppi
                                                        115/136

  Racchiudendo una serie di caratteri tra una cop-
pia di apici doppi si mantiene il valore letterale di
questi caratteri, a eccezione di $,
‘ e . Esempio
$ echo "Il parametro $0 contiene: "$0""
Il parametro $0 contiene: "-bash"
Espressioni regolari
                                                                            116/136
A (modern) RE is one or more non-empty branches, separated by ‘ | ’.
      It matches anything that matches one of the branches.
A branch is one or more pieces, concatenated. It matches a match for
          the first, followed by a match for the second, etc.
A piece is an atom possibly followed by a single ‘*’, ‘+’, ‘?’, or bound.
An atom followed by ‘*’ matches a sequence of 0 or more matches of
the atom. An atom followed by ‘+’ matches a sequence of 1 or more
matches of the atom. An atom followed by ‘?’ matches a sequence of
                    0 or 1 matches of the atom.
Espressioni regolari (2)
                                                                         117/136
  A bound is ‘ {’ followed by an unsigned decimal integer, possibly
followed by ‘,’ possibly followed by another unsigned decimal integer,
    always fol- lowed by ‘ }’. The integers must lie between 0 and
RE DUP MAX (255) inclusive, and if there are two of them, the first
may not exceed the second. An atom followed by a bound containing
one integer i and no comma matches a sequence of exactly i matches
of the atom. An atom fol- lowed by a bound containing one integer i
 and a comma matches a sequence o i or more matches of the atom.
An atom followed by a bound containing two integers i and j matches
      a sequence of i through j (inclusive) matches of the atom.
Espressioni regolari di Bash
                                                                         118/136
   * ⇒ Corrisponde ad ogni stringa, NULL STRING inclusa.
? ⇒ Corrisponde ad ogni singolo carattere.
[...] ⇒ Corrisponde con uno dei caratteri racchiusi fra parentesi.
Una coppia di caratteri separati da una tilde denota un intervallo



Apice e punto esclamativo invertono la selezione, se messi come primo
                          carattere dopo [




  i caratteri ] e − possono essere ricercati mettendoli al primo posto
                                dopo la [
Le classi POSIX
                                                  119/136
       esistono anche delle classi POSIX
     (alnum,alpha,digit,space,upper,lower)
   che possono venir utilizzate con la sintassi
                   [[:classe:]]
 Spiegazione:
• alnum : caratteri alfanumerici
• alpha : solo i caratteri alfabetici
• digit : solo le cifre
• space : i caratteri di spazio e TAB
• upper : i caratteri MAIUSCOLI
Le opzioni nelle espressioni regolari
                                                     120/136

Per scegliere fra diversi token opzionali si usano
 le parentesi tonde per delimitare l’insieme e il
     segno di pipe | per separare le opzioni



                       e.g.
              ls -Fa | egrep ’(a|b)’
Le ripetizioni nelle espressioni regolari
                                                      121/136

 Per identificare token di lunghezza predefinita
(fino a 255 ripetizioni) o intervalli di ripetizione
(da n a m volte) si utilizzano le parentesi graffe
  con un numero, con dei numeri separati da
  virgole o con due numeri separati dal meno



                        e.g.
             ls | egrep ’s{3}l+g{3}’
Comandi - sed
                                                     122/136
  Comando utile ma molto complesso, ne vediamo
solo un uso: sostituzione di stringhe
Riga per riga di un file (o dello standard output)
sostituisce una stringa con un altra.
Esempio
abbiamo il file prova.html e vogliamo cambiare
alcuni link senza editare il file:
$ cat prova.html| 
    sed ’s/<a href="immagini/<a href="images/’ > 
    prova-modificato.html
Un editor universale: vi
                                                      123/136

  Per poter creare degli script ` necessario avere
                                 e
un editor di testo. Linux dispone di molti editor,
ciascuno con le sue peculiarit`, ma uno solo lo
                                a
troverete in tutti i sistemi Unix, e molto spesso `
                                                  e
l’unico che avrete a disposizione.

       Benvenuti nel magico mondo di vi.
Esecuzione
                                                        124/136

 Il comando base per accedere a vi `, ovviamente,
                                       e
vi, ma nelle distribuzioni pi` recenti ` presente una
                             u         e
versione enhanced, con molte funzionalit` in pi`,
                                             a     u
che prende il nome di vim (Vi IMproved ).
Descrizione dell’ambiente
                                                           125/136

  Eseguendo il comando vi vi troverete davanti al-
l’ambiente di editing, che appare inizialmente piut-
tosto scarno. L’area di lavoro ` completamente
                                   e
dedicata al testo da elaborare, ad esclusione del-
l’ultima riga in basso che mantiene, di volta in
volta, indicazioni sullo stato in cui si trova l’editor.
Ambienti
                                                     126/136
  vi infatti ` stato progettato in modo da distin-
             e
guere anche concettualmente l’immissione del te-
sto dall’interpretazione di comandi che operano
sul testo inserito.
In qualsiasi momento, per poter inserire un co-
mando ` sufficiente tornare alla modalit` comandi
        e                              a
premendo il tasto Esc.
Inoltre il tasto Esc consente di annullare un co-
mando non completato. Premerlo pi` volte di
                                       u
seguito non ha effetti collaterali.
Apertura di un file
                                                      127/136
  L’esecuzione del comando vi senza argomenti,
crea un nuovo buffer vuoto.
Se invece vogliamo editare un file esistente possia-
mo invocare vi seguito dal nome del file che voglia
editare.
vi nomefile
 In alternativa, una volta avviato vi, ` possibile
                                       e
aprire un file con il comando :e
:e nomefile
Inserimento del testo
                                                      128/136

  Premendo il tasto i oppure Ins si passa alla mo-
dalit` di inserimento del testo, in cui ` possibile
     a                                  e
digitare del testo normalmente.
Solitamante questa modalit` ` identificata dalla
                             a e
presenza della stringa – INSERT – nella barra di
stato.
Inserimento del testo (2)
                                                      129/136
Testo inserito dopo aver premuti il tasto [i]
~
~
~
~
-- INSERT --
  `
  E da notare che il carattare (tilde) identifica le
linee vuote.
Modifica del testo
                                                          130/136

   La pressione del tasto r attiva la modalit` mo-
                                               a
difica del testo in cui il testo inserito sovrascrive il
testo esistente.
L’attivazione di tale modalit` ` identificata dalla
                                ae
presenza della stringa – REPLACE – nella barra di
stato.
Lo stesso risultato si ottiene premendo due volte
il tasto Ins.
Cancellazione del testo
                                                       131/136
 Per cancellare del testo ` possibile utilizzare il
                           e
comando x che cancella il carattere identificato
dal cursore, oppure il comando dd preceduto da
un numero n il quale, appunto, cancella n righe a
partire da quella occupata dal cursore.
Testo inserito nelle slide precedenti
continua sulla seconda riga
e sulla terza
~

  L’esecuzione del comando 2 dd quando il curso-
re si trova sulla prima riga canceller` le prime due
                                      a
righe e lascer` la terza.
              a
Copia ed incolla
                                                                             132/136
  Il comando yy, eventualmente preceduto da un numero, copia in un
buffer n righe a partire da quella in cui si trova il cursore.


La funzione “Taglia” in realt` l’abbiamo gi` vista, dato che viene svolta
                             a             a
dal comando dd che non si limita a cancellare una riga ma la copia in
un buffer.


Per incollare si usano i comandi p oppure P. Il primo incolla a par-
tire dalla riga seguente a quella in cui si trova il cursore, il secondo a
partire da quella in cui si trova il cursore.
Ricerche nel testo
                                                      133/136

  Per cercare una stringa all’interno di un file di
testo si usa il comando /. Tra l’altro questo co-
mando svolge la stessa funzione in molte situazioni
(all’interno di man, less, more, ecc.).
Dopo la pressione del tasto / ` possibile digitare
                                e
la stringa da cercare che apparir` nella barra di
                                   a
stato.
Per ripetere l’ultima ricerca effettuata si usa il
tasto n.
Salvataggio e chiusura
                                                        134/136

  Per salvare il testo editato, si usa il comando :w,
mentre per uscire dal programma si usa il comando
:q.
I due comandi possono esseri combinati (:wq) per
salvare ed uscire nello stesso momento.
Inoltre e’ possibile forzare l’uscita senza salvare
(con conseguente perdita delle modifiche), con il
comando :q!.
Riepilogo (1)
                                            135/136
• vi nomefile, apre il file in vi
• Esc torna alla modalit` comandi
                        a
• :e (edit) apre un file
• i o Ins inserisce del testo
• r o due volte Ins sovrascrive il testo
• [n] dd taglia n righe
• [n] yy copia n righe
• p incolla dopo la riga corrente
• P incolla a partire dalla riga corrente
Riepilogo (2)
                                  136/136

• / cerca all’interno del testo
• n ripete l’ultima ricerca
• :w salva
• :q chiude
• :q! chiude senza salvare

Mais conteúdo relacionado

Mais procurados

Corso Linux
Corso LinuxCorso Linux
Corso Linux
agnelloe
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
Marco Ferrigno
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
Majong DevJfu
 
Understanding Linux: 20 anni di kernel tra storia e tecnica
Understanding Linux: 20 anni di kernel tra storia e tecnicaUnderstanding Linux: 20 anni di kernel tra storia e tecnica
Understanding Linux: 20 anni di kernel tra storia e tecnica
Marco Ferrigno
 

Mais procurados (18)

Corso Linux
Corso LinuxCorso Linux
Corso Linux
 
Fondamenti di GNU/Linux: FileSystem e Partizioni
Fondamenti di GNU/Linux: FileSystem e PartizioniFondamenti di GNU/Linux: FileSystem e Partizioni
Fondamenti di GNU/Linux: FileSystem e Partizioni
 
APT per RPM
APT per RPMAPT per RPM
APT per RPM
 
Gestione dischi - File system - LVM
 Gestione dischi - File system - LVM Gestione dischi - File system - LVM
Gestione dischi - File system - LVM
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
Introduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazioneIntroduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazione
 
Installazione Linux
Installazione LinuxInstallazione Linux
Installazione Linux
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
 
Open@BNCF
Open@BNCFOpen@BNCF
Open@BNCF
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
 
Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014
 
Corso formazione Linux
Corso formazione LinuxCorso formazione Linux
Corso formazione Linux
 
Leggimi
LeggimiLeggimi
Leggimi
 
Lezione due
Lezione dueLezione due
Lezione due
 
Moduli del kernel - Boot del sistema
 Moduli del kernel - Boot del sistema Moduli del kernel - Boot del sistema
Moduli del kernel - Boot del sistema
 
Lezione Tre
Lezione TreLezione Tre
Lezione Tre
 
Understanding Linux: 20 anni di kernel tra storia e tecnica
Understanding Linux: 20 anni di kernel tra storia e tecnicaUnderstanding Linux: 20 anni di kernel tra storia e tecnica
Understanding Linux: 20 anni di kernel tra storia e tecnica
 
Presentazione sulle caratteristiche di Windows
Presentazione sulle caratteristiche di WindowsPresentazione sulle caratteristiche di Windows
Presentazione sulle caratteristiche di Windows
 

Destaque

GTX_Brand_BreatheSweeps_
GTX_Brand_BreatheSweeps_ GTX_Brand_BreatheSweeps_
GTX_Brand_BreatheSweeps_
Josue Sierra
 
文社的盛衰 書評口頭報告 Presentation
文社的盛衰 書評口頭報告 Presentation文社的盛衰 書評口頭報告 Presentation
文社的盛衰 書評口頭報告 Presentation
Yi-Chi Tang
 
Who writes Linux (2012)
Who writes Linux (2012)Who writes Linux (2012)
Who writes Linux (2012)
fosk
 
infrakrasnoe izluchenie
infrakrasnoe izluchenieinfrakrasnoe izluchenie
infrakrasnoe izluchenie
viktoriya71
 
The LEAP2A approach to portfolio interoperability
The LEAP2A approach to portfolio interoperabilityThe LEAP2A approach to portfolio interoperability
The LEAP2A approach to portfolio interoperability
Simon Grant
 
informacionnaya poddershka pedagogov
informacionnaya poddershka pedagogovinformacionnaya poddershka pedagogov
informacionnaya poddershka pedagogov
viktoriya71
 
STEKLO V PROIZVEDENIYAH ISKUSSTVA
STEKLO V PROIZVEDENIYAH ISKUSSTVASTEKLO V PROIZVEDENIYAH ISKUSSTVA
STEKLO V PROIZVEDENIYAH ISKUSSTVA
viktoriya71
 
Il blog come risorsa pedagogica per gli insegnanti
Il blog come risorsa pedagogica per gli insegnantiIl blog come risorsa pedagogica per gli insegnanti
Il blog come risorsa pedagogica per gli insegnanti
Manuela Repetto
 

Destaque (20)

GTX_Brand_BreatheSweeps_
GTX_Brand_BreatheSweeps_ GTX_Brand_BreatheSweeps_
GTX_Brand_BreatheSweeps_
 
文社的盛衰 書評口頭報告 Presentation
文社的盛衰 書評口頭報告 Presentation文社的盛衰 書評口頭報告 Presentation
文社的盛衰 書評口頭報告 Presentation
 
Who writes Linux (2012)
Who writes Linux (2012)Who writes Linux (2012)
Who writes Linux (2012)
 
Bibilofil presentation May 2008
Bibilofil presentation May 2008Bibilofil presentation May 2008
Bibilofil presentation May 2008
 
Mobile card game service
Mobile card game serviceMobile card game service
Mobile card game service
 
infrakrasnoe izluchenie
infrakrasnoe izluchenieinfrakrasnoe izluchenie
infrakrasnoe izluchenie
 
food
foodfood
food
 
The LEAP2A approach to portfolio interoperability
The LEAP2A approach to portfolio interoperabilityThe LEAP2A approach to portfolio interoperability
The LEAP2A approach to portfolio interoperability
 
E-portfolio values (ppt)
E-portfolio values (ppt)E-portfolio values (ppt)
E-portfolio values (ppt)
 
Pagine fan
Pagine fanPagine fan
Pagine fan
 
History 6 class
History 6 classHistory 6 class
History 6 class
 
Nghiệp vụ Mitraco Securities
Nghiệp vụ Mitraco SecuritiesNghiệp vụ Mitraco Securities
Nghiệp vụ Mitraco Securities
 
Evolution - Η Εξέλιξη της Ζωής
Evolution - Η Εξέλιξη της ΖωήςEvolution - Η Εξέλιξη της Ζωής
Evolution - Η Εξέλιξη της Ζωής
 
informacionnaya poddershka pedagogov
informacionnaya poddershka pedagogovinformacionnaya poddershka pedagogov
informacionnaya poddershka pedagogov
 
Palacio Nacional de Sintra (Lisboa)
Palacio Nacional de Sintra (Lisboa)Palacio Nacional de Sintra (Lisboa)
Palacio Nacional de Sintra (Lisboa)
 
Changing Template Engine
Changing Template EngineChanging Template Engine
Changing Template Engine
 
Adam & Jamie Videos on the 'Net
Adam & Jamie Videos on the 'NetAdam & Jamie Videos on the 'Net
Adam & Jamie Videos on the 'Net
 
Dich vu webapplication
Dich vu webapplicationDich vu webapplication
Dich vu webapplication
 
STEKLO V PROIZVEDENIYAH ISKUSSTVA
STEKLO V PROIZVEDENIYAH ISKUSSTVASTEKLO V PROIZVEDENIYAH ISKUSSTVA
STEKLO V PROIZVEDENIYAH ISKUSSTVA
 
Il blog come risorsa pedagogica per gli insegnanti
Il blog come risorsa pedagogica per gli insegnantiIl blog come risorsa pedagogica per gli insegnanti
Il blog come risorsa pedagogica per gli insegnanti
 

Semelhante a Lug Roma3 Corso Linux Base

LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
Maurizio Antonelli
 
Introduzione User Mode Linux
Introduzione User Mode LinuxIntroduzione User Mode Linux
Introduzione User Mode Linux
Majong DevJfu
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
Daniele Costarella
 

Semelhante a Lug Roma3 Corso Linux Base (20)

Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding Linux
 
Linux & Open Source : Lezione Tre
Linux & Open Source : Lezione TreLinux & Open Source : Lezione Tre
Linux & Open Source : Lezione Tre
 
GNU Linux introduction
GNU Linux introductionGNU Linux introduction
GNU Linux introduction
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernelLUG - Ricompilazione kernel
LUG - Ricompilazione kernel
 
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nixDa Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
 
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi Linux
 
Linux & Open Source : Lezione Due
Linux & Open Source : Lezione DueLinux & Open Source : Lezione Due
Linux & Open Source : Lezione Due
 
Introduzione User Mode Linux
Introduzione User Mode LinuxIntroduzione User Mode Linux
Introduzione User Mode Linux
 
Elio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaElio Tondo - Linux In Azienda
Elio Tondo - Linux In Azienda
 
LTSP
LTSPLTSP
LTSP
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
debian gnu linux
debian gnu linuxdebian gnu linux
debian gnu linux
 
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
 
Relazione Sistemi
Relazione SistemiRelazione Sistemi
Relazione Sistemi
 
Elementidi informatica
Elementidi informaticaElementidi informatica
Elementidi informatica
 
Linux Security Hardening - panoramica sui principi generali per la riduzione...
Linux  Security Hardening - panoramica sui principi generali per la riduzione...Linux  Security Hardening - panoramica sui principi generali per la riduzione...
Linux Security Hardening - panoramica sui principi generali per la riduzione...
 

Mais de fosk (11)

Spectrum wall chart_aug2011
Spectrum wall chart_aug2011Spectrum wall chart_aug2011
Spectrum wall chart_aug2011
 
Spectrum use summary_master-06212010
Spectrum use summary_master-06212010Spectrum use summary_master-06212010
Spectrum use summary_master-06212010
 
Le Guide Il Sole24 Ore 31mar10
Le Guide Il Sole24 Ore 31mar10Le Guide Il Sole24 Ore 31mar10
Le Guide Il Sole24 Ore 31mar10
 
Lug Roma3 Corso Linux Avanzato
Lug Roma3   Corso Linux AvanzatoLug Roma3   Corso Linux Avanzato
Lug Roma3 Corso Linux Avanzato
 
Prince-Of-Persia-Manual-(1989)(Broderbund-Software-Inc)
Prince-Of-Persia-Manual-(1989)(Broderbund-Software-Inc)Prince-Of-Persia-Manual-(1989)(Broderbund-Software-Inc)
Prince-Of-Persia-Manual-(1989)(Broderbund-Software-Inc)
 
How to quad boot a macbook
How to quad boot a macbookHow to quad boot a macbook
How to quad boot a macbook
 
OpenWRT manual
OpenWRT manualOpenWRT manual
OpenWRT manual
 
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menuFiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
Fiat Stilo Connect Nav+ GPS GSM hidden diagnostic menu
 
Fiat Stilo Connect Nav+
Fiat Stilo Connect Nav+Fiat Stilo Connect Nav+
Fiat Stilo Connect Nav+
 
How It Works The Computer (1971 Edition)
How It Works   The Computer (1971 Edition)How It Works   The Computer (1971 Edition)
How It Works The Computer (1971 Edition)
 
How It Works The Computer (1979 Edition)
How It Works   The Computer (1979 Edition)How It Works   The Computer (1979 Edition)
How It Works The Computer (1979 Edition)
 

Lug Roma3 Corso Linux Base

  • 1. 2/136 Lezione 1 - Unix: Definizioni e Storia
  • 2. Def: Sistema operativo 3/136 Collezione di programmi per il coordinamento delle attivit` e delle componenti funzionali a di un calcolatore Le attivit` possono venir generate a seguito dell’interazione a operatore/elaboratore
  • 3. Collezione di programmi 4/136 • Kernel o Nucleo del S.O. • Driver • Gestore degli accessi • Gestore dei protocolli di rete • Programmi di utilit` a • Compilatori • Librerie •...
  • 4. Attivit` funzionali a 5/136 • elaborazione numerica • stampe e salvataggi • scrittura di applicativi • interazione con applicativi • attivit` ludica a •...
  • 5. Coordinamento 6/136 • Gestione del tempo di processore • Condivisione d’accesso • Mutua esclusione • Serializzazione • Controllo permessi •...
  • 7. Unix - storia 8/136 Nasce negli anni ’70 alla Bell Labs (Thompson, Ritchie) come sistema proprietario in contrapposizione alla politica di MULTICS (Multiplexed Information and Computing Service) Gira inizialmente di PDP-7 (assembler) Poi su PDP-11 viene riscritto in C (1973) da Dennis Ritchie
  • 8. Unix - storia (2) 9/136 In seguito ad un accordo del 1953 AT&T non poteva commercializzare prodotti informatici ⇓ Unix viene offerto gratutitamente (no support) ⇓ Viene portato su altre architetture
  • 9. Unix - storia (3) 10/136 AT&T nel 1983 estende Unix ⇓ System V Alla Berkeley Unix viene portato su VAX ⇓ Berkeley System Distribution
  • 10. Unix - inquadramento 11/136 Sistema operativo: • multitasking grazie a: – time sharing – contest switching • multiuser con: – superuser – utenti – gruppi
  • 11. Unix - inquadramento (2) 12/136 • portabile – scritto in linuguaggio C – implementa una serie di funzioni standard • con funzionalit` di rete a – client/server – peer2peer – 3-Tier
  • 12. Progetto POSIX 13/136 Portable Operating System Standard for Computer Environment • Standard IEEE • Detta i requisiti di compatibilita con lo standard Unix • si suddivide in: – POSIX.1 (IEEE 1003.1 ) ⇒ Kernel – POSIX.2 (IEEE 1003.2 ) ⇒ Interfaccia, utilities – POSIX.3 (IEEE 1003.3 ) ⇒ Tools di valutazione
  • 13. Linux & Open Source 14/136 progetto GNU (GNU is NOT UNIX) FSF: 1985 - Richard Stallman (MIT) progetto Linux Linux on Minix: 1991 - Linus Torvald progetto Minix Minux: Prof. Tanenbaum progetto GPL (GNU Public License) GNU/Linux + Debian
  • 14. Il kernel 15/136 Gestisce: • accesso al filesystem • scheduling • accesso ai protocolli di rete Fornisce: • API per l’accesso ai dispositivi HW • virtualizzazione della memoria • strumenti di mutua esclusione
  • 15. Il filesystem Unix 16/136 Il filesystem ` il complesso sistema che i sistemi operativi moderni e utilizzano per organizzare le entit` di memorizzazione permanente a Poich´ in Unix ogni cosa ` un file il filesystem ` fondamentale e e e La struttura logica del FS Unix ` un albero e La struttura fisica del FS Unix ` fatta di blocchi e inode e Il filesystem Unix inizia da root (/)
  • 16. File ordinari 17/136 Rientrano in questa categoria l’80% dei file di uso comune. Possono avere un nome lungo fino a 255 caratteri, che pu` iniziare e contenere o qualunque lettera o numero, degli spazi, i segni di interpunzione. [oratio:~] andrea% .,asdf. sdfjk,234_ad: ` un nome di file valido e
  • 17. File ordinari (2) 18/136 Bisogna stare attenti solo al fatto che: • il primo carattere non sia un . • il primo carattere non sia un - • il nome non contenga il ; $ • il nome non contenga |, &
  • 18. File ordinari (3) 19/136 Si possono creare con: • touch nomefile • attraverso ridirezione dell’output • con un editor (VI, Emacs) Si riconoscono listando la directory con ls -l drwxr-xr-x 42 andrea staff 1428 Nov 4 21:19 ex-Progetti-oratio drwxr-xr-x 29 andrea staff 986 Nov 4 21:19 ex-home-oratio -rw-r--r-- 1 root staff 150266148 Sep 26 18:10 ex-root-oratio.tgz -rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 httpd.conf
  • 19. Directory 20/136 Hanno la stessa caratteristica dei file, ma il loro nome finisce sempre con slash (/). Ovviamente possono contenere file o directory Si riconoscono listando la directory con ls -l drwxr-xr-x 42 andrea staff 1428 Nov 4 21:19 ex-Progetti-oratio drwxr-xr-x 29 andrea staff 986 Nov 4 21:19 ex-home-oratio -rw-r--r-- 1 root staff 150266148 Sep 26 18:10 ex-root-oratio.tgz -rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 httpd.conf
  • 20. File nascosti? 21/136 Tutti i file o le directory che iniziano con il punto non sono visibili con il comando ls a meno di non usare il parametro -a [oratio:~] andrea% ls -la drwxr-xr-x 42 andrea staff 1428 Nov 4 21:19 . drwxr-xr-x 29 andrea staff 986 Nov 4 21:19 .. -rw-r--r-- 1 root staff 150266148 Sep 26 18:10 .ex-root-oratio.tgz -rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 .httpd.conf -rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 .bashrc
  • 21. File speciali - mount point 22/136 Non abbiamo degli identificatori standard come in DOS per i dispositivi di memorizzazione Possiamo far corrispondere i dispositivi di memorizzazione con delle directory e.g. Floppy disk 1 (A:) ⇒ /mnt/floppy Partizione primaria del primo HD (C:) ⇒ / Partizione secondaria del primo HD (D:) ⇒ /home
  • 22. File speciali - mount point (2) 23/136 Alcuni mount point sono previsti dal sistema: • scritti nel file /etc/fstab • verificabili attraverso il comando mount Avendo opportuni privilegi se ne possono montare di propri • dischetti ⇒ /dev/fdn • partizioni ⇒ /dev/hdcn • immagini ISO ⇒ /dev/loopn
  • 23. File speciali - altri 24/136 Altri tipi di file: • socket • pipe • link • devices
  • 24. Le directory importanti 25/136 Se ci si fa un giretto fuori dalla propria home si scopre un mondo vastissimo Applications Encode automount resources Applications (Mac OS 9) Encode.pm bin rr Cartella Sistema Library cores sbin Desktop Network dev sw Desktop (Mac OS 9) Previous Systems etc temporaneo Desktop DB System mach tmp Desktop DF Temporary Items mach.sym usr Desktop Folder TheVolumeSettingsFolder mach_kernel var Developer Trash opt Documenti Users private Elimina al Riavvio Volumes res
  • 25. Le directory importanti 26/136 Lo standard POSIX prevede la presenza delle seguenti directory di sistema boot bin dev etc home lib opt sbin usr var tmp usr/local var/log
  • 26. Il contenuto di etc 27/136 Contiene: • file di configurazione (rete, sicurezza, servizi) • script e directory di runlevel • file di password e gruppi • file e directory di crontab • file di default
  • 27. Il contenuto di bin 28/136 Contiene i comandi di base del sistema: • cp, mv, ls, rm,. . . • echo, cat, . . . • kill, stat,. . . • le shell
  • 28. Il contenuto di sbin 29/136 Contiene i comandi specifici di pseudo-amministrazione: • utility per la rete (setup, probe) • utility per i dischi • utility per il logging • utility per il boot
  • 29. Il contenuto di opt 30/136 Directory di nuova fattura: • tende a sostituire usr/local • ci vanno i programmi che nella loro folder hanno una gestione non conforme allo standard per eseguibili, configurazioni e manuali • Java, . . .
  • 30. Il contenuto di usr 31/136 Directory storica di Unix, contiene: • il sistema X11 • le utility evolute per la configurazione di: – rete – stampanti – dischi – librerie – utenti – sicurezza
  • 31. Il contenuto di usr/local 32/136 Directory repository per i programmi locali All’inizio Unix fu pensato con filesystem distribuito/remoto Questa directory era il punto di montaggio dei dispositivi locali alla macchina Ha in s` tutta la struttura di / (root) e
  • 32. Il contenuto di dev 33/136 Directory dei dispositivi virtuali: • dischi e partizioni • porte seriali, parallele, ausiliari, . . . • frame-buffer, video, ram, . . . • terminali seriali e virtuali • standard input, output e error • zero, null e random
  • 33. Il contenuto di mnt 34/136 Directory che contiene i mount-point dei dispositivi removibili: • floppy • cdrom • secure digital & flash card • partizioni DOS/Windows :-)
  • 34. non ci perdiamo... (pwd) 35/136 Il filesystem Unix ` molto vasto, ma con pwd e possiamo sempre conoscere il path attuale Comando: [Computer] andrea% pwd /System/Library/StartupItems/Portmap/Resources Attenzione ai link simbolici poich´ vengono risolti !! e
  • 35. ...path della propria homedir 36/136 Viene deciso dall’amministratore durante la creazione dell’utenza insieme con la shell di default root:*:0:0:System Administrator:/var/root:/bin/tcsh Il default ` /home/<nomeutente> e Si pu` raggiungere attraverso cd, ~ o $HOME o
  • 36. Il comando mkdir 37/136 Come in DOS server per creare una DIRECTORY [Computer] andrea% mkdir Resources/Tezzuia /System/Library/StartupItems/Portmap/Resources Attenzione a guardar bene dove siamo!!
  • 37. Il comando rm -r 38/136 Server per cancellare ricorsivamente il contenuto di una DIRECTORY Comando: [Computer] andrea% rm -r Portmap /System/Library/StartupItems/Portmap/Resources Attenzione al PATH, possiamo cancellare TUTTO!!
  • 38. Il comando ls -l 39/136 Server per listare la DIRECTORY mostrandi tutti gli attributi Non visualizza i file . (punto) Per visualizzare i file speciali ci mettiamo il parametro -a Comando: [Computer] andrea% ls -l Portmap /System/Library/StartupItems/Portmap/Resources
  • 39. Il comando ls -l (2) 40/136 Server per listare la DIRECTORY mostrandi tutti gli attributi total 1116 -rw-r--r-- 1 andrea staff 33783 Nov 4 09:14 back.jpg -rw-r--r-- 1 andrea staff 36334 Nov 4 09:14 back2.jpg -rw-r--r-- 1 andrea staff 10933 Nov 4 09:14 bg.jpg -rw-r--r-- 1 andrea staff 42173 Nov 4 09:14 d12.jpg -rw-r--r-- 1 andrea staff 11161 Nov 4 10:49 img4.gif -rw-r--r-- 1 andrea staff 116144 Nov 4 10:54 img4.jpg -rw-r--r-- 1 andrea staff 5691 Nov 11 22:03 slide.out -rw-r--r-- 1 andrea staff 663403 Nov 11 22:03 slide.pdf -rw-r--r-- 1 andrea wheel 29397 Nov 11 22:05 slide.tex -rw-r--r-- 1 andrea wheel 29167 Nov 11 22:03 slide.tex~
  • 40. Il comando ln 41/136 Crea dei link ai file Due tipi di link: • hard link - (ogni file ` un hard link) e • soft link - (puntatori, il kernel sostituisce la destinazione) Opzioni: -s : link simbolici
  • 41. Il comando touch 42/136 Cambia la data di accesso e modifica di un file [Computer] andrea% touch Tezzuia.file [Computer] andrea% ls -l Tezzuia.file -rw-r--r-- 1 andrea staff 0 Nov 11 22:22 Tezzuia.file Riproviamo dopo 2 minuti !!
  • 42. Il comando chmod 43/136 Server per cambiare gli attributi di un file o directory 0400 read by owner 0200 write by owner 0100 execute (or search for directories) by owner 0070 read, write, execute/search by group 0007 read, write, execute/search by others r = read , w = write , x = execute u = user , g = group , o = other , a = all
  • 43. Il comando chown 44/136 Server per cambiare i proprietari di un file o directory Comando: [Computer] andrea% chown [-R] <user>.<group> <file> e.g. [Computer] andrea% chown -R nobody.nobody file
  • 44. Il comando cp -ra 45/136 Guardare il man!!
  • 45. Il comando mv 46/136 Guardare il man!!
  • 46. Il comando mount 47/136 Guardare il man!!
  • 47. Il comando wc 48/136 Riporta in standard output il numero di parole, byte, linee che compongono il file Opzioni: -l : numero di linee -c : numero di caratteri -w : numero di parole
  • 48. Il comando file 49/136 Restituisce il tipo di file Il nome dei file pu` contenere qualsiasi carattere o (anche il punto), non esiste il concetto di esten- sione per identificare il tipo di file. Il comando file confronta il contenuto del file con un database (magic.mime) e restituisce il tipo di dati contenuti nel file.
  • 49. Il comando find 50/136 Serve per ricercare un file all’interno del filesystem Realizza la ricerca discendendo ricorsivamente le directory a partire da quella indicata come parametro. Individua in questa passeggiata i file che soddisfano l’espressione immessa come parametro L’espressione ` formata da PRIMARIES ed e OPERANDI
  • 50. Il comando find (2) 51/136 PRIMARIES importanti: • -delete : cancella tutti i file trovati • -empty : ci dice se il file attuale vuoto • -iname <pattern> : pattern non case-sensitive • -links <n> : ritorna i file che hanno n links • -ls : riporta l’output in formato del comando ls -l • -nogroup : riporta i file che non appartengono a gruppi conosciuti • -nouser : riporta i file che non appartengono a utenti conosciuti • -perm <nnnn> : riporta i file che hanno il bit dei permessi <nnnn>
  • 51. Il comando cat 52/136 Non serve solo a visualizzare, ma anche a concatenare i file e.g. bash-2.05a$ cat ilfile sefile > dufile Contatena il contenuto di ilfile e di sefile e scrive il risultato in dufile e.g.2 bash-2.05a$ cat ilfile sefile >> dufile Contatena il contenuto di ilfile e di sefile e appende il risultato alla fine di dufile
  • 52. Il comando cat (2) 53/136 Le opzioni pi` interessanti sono: u • -n: numera le linee • -b: non numera le linee vuote • -s: toglie le linee vuote consecutive • -v: visualizza i caratteri non stampabili • -t: visualizza i caratteri TAB come CTRL-I
  • 53. Comandi more e less 54/136 Vengono utilizzati quando l’output supera l’ampiezza della zona di visualizzazione Possono essere utilizzati in pipe all’output... bash-2.05a$ cat ilfile dufile | less ... o con parametro il nome di un file bash-2.05a$ more ilfile
  • 54. Comandi head e tail 55/136 Vengono utilizzati per selezionare parti del file head visualizza le prime 10 righe del file (parametro) o dell’output (pipe) tail visualizza le ultime 10 righe del file (parametro) o dell’output (pipe)
  • 55. Comandi head e tail (2) 56/136 Opzioni di head: • -n: decide il numero di linee da visualizzare
  • 56. Comandi head e tail (3) 57/136 Opzioni importanti di tail: • -f: non esce dalla visualizzazione aspettando ulteriori linee • -n: visualizza le ultime n righe • -n +: visualizza a partire dall’n-esiama riga • -b: visualizza gli ultimi n blocchi da 512 bytes • -c: visualizza gli ultimi n bytes • -r: utilizza l’ordine inverso di visualizzazione
  • 57. Il multitasking - time sharing 58/136 Metodo di ripartizione del tempo di elaborazione in cui un componente detto scheduler si occupa di attivare i processi in base alla priorit` delle a code di attesa in cui essi sono inseriti Si differenzia dal multitasking cooperativo per il fatto che non sono i processi ad avere il controllo sul tempo di esecuzione a loro disposizione, ma esiste un controllore centralizzato per tutto il sistema
  • 58. Concetto di processo 59/136 Un’entit` di elaborazione unitaria, generato da a un programma (eventualmente compilato), ovvero da un metodo simbolico con cui vengono espressi gli algoritmi che un processore deve eseguire per elaborare dei risultati a partire da alcuni dati iniziali. In Unix ogni processo ` di propriet` di un singolo utente (colui che lo e a ha lanciato), ha una priorit`, una sua area di memoria assegnata e pu` a o eventualmente scambiare messaggi e dati con altri processi
  • 59. Concetto di thread 60/136 Unit` logica di elaborazione all’interno di un a processo (e.g. stampa, calcolo, accesso alla rete, etc..) Ogni thread condivide con gli altri (dello stesso processo) l’area di memoria assegnata e non ` e quindi necessario avviare procedure di scambio messaggi con memoria condivisa fra processi Viene evitato il contest switching
  • 60. Processi di sistema 61/136 Esistono particolari tipi di processi che sono attivati dal sistema all’avvio e vivono per tutto il tempo in cui ` attivo il sistema detti demoni e Gestiscono: • servizi di rete • azioni automatizzate e temporizzate • controlli sullo stato del sistema • accessi locali
  • 61. Processi utente 62/136 Fanno parte di questa classe tutti i processi che derivano dall’invocazione di comandi dalla shell e tutti quelli attivati da particolari condizioni (cron e post-login/pre-logout) Ogni utente pu`:o • sospendere • uccidere :-( • osservare • riavviare
  • 62. Il comando ps 63/136 Un processo ` identificato dal suo nome e dal e suo Process-ID (PID) Attraverso il comando ps ` possibile visualizzare e lo stato dei processi Opzioni: • -a: mostra tutti i processi • -c: mostra solo il comando e non il path • -u: mostra informazioni sull’utente proprietario del processo • -x: non mostra le informazioni sulle linee di terminale
  • 63. Il comando top 64/136 Mostra le statistiche sull’uso del sistema Nelle statistiche ` previsto lo stato di ogni e singolo processo I processi sono ordinati per quantit` di tempo di a CPU occupato Schiacciando la M il sistema ordina la visualizzazione per quantit` di memoria occupata a
  • 64. I segnali 65/136 ` E possibile inviare dei segnali ad un processo Attraverso la tastiera: • CTRL-C : KILL • CTRL-Z : STOP Attraverso il comando kill: • -9 o -KILL • -2 o -INT • -1 o -HUP
  • 65. Foreground & Background 66/136 Sono le due modalit` di esecuzione in cui si pu` a o trovare un processo I processi che sono interattivi non possono essere mandati in bg ` E possibile cambiare la modalit` di esecuzione a con il comando bg dopo aver inviato un segnale di sospensione ad un processo (CTRL-Z) e ritornare alla modalit` interattiva attraverso fg a
  • 66. Il comando jobs 67/136 Il comando permette di visualizzare quali siano i processi in esecuzione bg o sospesi
  • 67. Il comando fg 68/136
  • 68. Il comando bg 69/136
  • 69. Il comando & 70/136
  • 70. Il comando kill 71/136 Invia un segnale ad un processo attraverso il suo PID Prima ricerco il PID del processo a cui voglio inviare il segnale (ps), poi: kill -9 <PID>
  • 71. Il comando killall 72/136 Invia un segnale ai processi attraverso il loro NOME Nel nome del processo non va incluso il PATH: killall -9 <Process-NAME>
  • 72. Il filesystem /proc 73/136 Tutto ` un file, quindi anche l’ambiente e le op- e zioni dei processi devono poter essere acceduti co- me file Il filesistem speciale /proc contiene una directory per ogni processo (identificata dal PID): in ogni directory: • cmdline • cwd • environ
  • 73. Il filesystem /proc (2) 74/136 • exe • fd/ • maps • mem • mounts • root • stat e statm • status
  • 74. Il filesystem /proc (3) 75/136 In Linux il filesystem proc contiene anche alcuni file ed alcune directory speciali che permettono di controllare a run-time il funzionamento del kernel. Per esempio: • /proc/cpuinfo • /proc/sys/net/ipv4/ip forward • /proc/sys/net/kernel/modprobe Le opzioni possono anche essere manipolate con sysctl
  • 75. Moduli 76/136 Anche nei kernel monolitici come quello di Unix e di Linux alcuni componenti possono essere inse- riti e rimossi durante il funzionamento. In questo modo ` possibile risparmiare memoria e dedicata al kernel senza doverlo ricompilare al sor- gere di una nuova esigenza. Per motivi legati alla gestione di memoria, per`, o l’uso di moduli riduce leggeremente le prestazioni del sistema.
  • 76. Moduli (2) 77/136 Alcuni comandi per gestire i moduli • insmod • modprobe • rmmod • modinfo Nei kernel recenti ` stata aggiunta la possibilit` di e a gestire automaticamente i moduli attraverso il file /etc/modules.conf oppure l’utility hotplug.
  • 77. La Shell 78/136 • assomiglia al prompt del DOS :-) • stabilisce un’interfaccia fra Utente e S.O. – interpreta i comandi immessi da tastiera – restituisce il valore di ritorno delle applicazio- ni • fornisce un linguaggio di programmazione
  • 78. Diverse esigenze ⇒ diverse shell 79/136 • Bourne Shell (Steve Bourne - MIT) • Korne Shell (David Korne - Bell Labs) • C-Shell (sea-shell) • a-Shell (ascetic shell) • tcshell (C-shell free) • Zshell (Korne shell free)
  • 79. Regole di base 80/136 • Qualsiasi SHELL di Unix ` in grado di distinguere le maiuscole dalle minuscole e • I comandi si terminano con un ENTER • I comandi possono essere pi` lunghi di una riga u • I parametri dei comandi in Unix sono preceduti dal meno (-) • I nomi delle variabili d’ambiente sono MAIUSCOLI • Per ottenere il valore delle variabili d’ambiente si usa il prefisso $ • Negli script di shell se si vuole proseguire oltre una riga il comando ` buona norma mettere un backslash alla fine di ogni riga () e
  • 80. Comandi 81/136 Comando DOS Comando Unix ATTRIB (set) chmod ATTRIB (get) ls -l DIR ls COPY cp MOVE mv XCOPY cp -r MORE less | more CHKDSK (stat) df
  • 81. Comandi (2) DELTREE rm -r DEL rm 83/136 FIND grep SORT sort DATE (get) date DATE (set) date -s TIME (get) date TIME (set) date -s CLS clear | reset TYPE cat VER uname -a
  • 82. Comandi (3) 84/136 MD mkdir CD (set) cd CD (get) pwd RD rm -ry Comandi di Help man & apropos
  • 83. grep 85/136 Il comando grep stampa le linee che soddisfano il pattern Comando: grep chino inserire delle parole e vedere se si riesce a farle stampare dare CTRL-C per terminare
  • 84. grep (2) 86/136 Opzioni importanti: • -i: non fa differenza fra maiuscole e minuscole • -r: ricerca ricorsivamente in [sotto]directory • -l: da solo il nome dell’entit` in cui si ` trovato il pattern a e • -v: inverte il match (NOT pattern) • -c: conta le linee che corrispondono il pattern
  • 85. Esempio: seleziono le directory 87/136 Voglio selezionare tutti i file che hanno nel loro nome il carattere “/” metto in pipe (concateno) l’output di ls con l’input di grep Comando: bash-2.05a$ ls -F | grep /
  • 86. Input e output 88/136 Unix ha a disposizione 4 operatori standard: • | (pipe o concatenamento) • > (output verso file) • < (input da file) • >> (output in aggiunta ad un file)
  • 87. Esempio - Redirezione verso un file 89/136 Alla fine dell’esercizio dobbiamo avere la lista delle subdirectory in un file Comando: bash-2.05a$ ls -F | grep / > ilfile Come possiamo sapere se il file contiene quello che volevamo? Nel frattempo mettiamo in un altro file tutto quel- lo che sta nella home tranne le sottodirectory
  • 88. Soluzione 90/136 Utilizziamo il comando cat per visualizzare ilfile Comando: bash-2.05a$ cat ilfile Utilizziamo il parametro -v di grep per invertire la selezione Comando: bash-2.05a$ ls -F | grep -v / > sefile
  • 89. Prompt della shell 91/136 Quando una shell attende ed esegue i comandi in maniera interattiva. La disponibilit` a ricevere comandi viene eviden- a ziata da un messaggio di invito o prompt. Prompt composto da simboli e informazioni utili all’utente per tenere d’occhio il contesto in cui sta operando.
  • 90. Esempio prompt 92/136 [luigi@lg600 luigi]$ pwd /home/luigi [luigi@lg600 luigi]$ cd /tmp [luigi@lg600 /tmp]$ echo $PS1 [u@h W]$ [luigi@lg600 /tmp]$ whoami luigi [luigi@lg600 /tmp]$ hostname lg600.gangitano.it [luigi@lg600 /tmp]$ pwd /tmp
  • 91. Storico dei comandi 93/136 Bash mantiene uno storico dei comandi utilizzati dall’utente. Lo storico NON si interrompe alla fine di una ses- sione o con un reboot (´ su file). e Freccette (s`,gi`) per sfogliarlo u u CTRL-R+[qualche carattere] per cercare all’inter- no dello storico CTRL-R cerca ancora
  • 92. Altri tasti utili 94/136 Andare all’inizio della riga - CTRL-A Andare alla fine della riga - CTRL-E CANC - CTRL-D (spesso CANC ´ mappato male) e
  • 93. Alias 95/136 Bash permette la definizione di nuovi comandi in forma di alias di altri comandi (o serie di comandi). alias - elenca gli alias esistenti alias nome=”comando con tutti i parametri” alias dir=ls –color
  • 94. Serie di comandi 96/136 ´ E possibile dare pi` comandi da eseguire in serie u separando gli elementi della lista con dei ; Esempio $ mv pippo.ps pluto.ps;mv pluto.ps pippo.ps Equivale a: $ mv pippo.ps pluto.ps $ mv pluto.ps pippo.ps
  • 95. Ambiente 97/136 Ogni programma in funzione nel sistema ha un proprio ambiente definito in base a delle varia- bili di ambiente.
  • 96. Variabili d’Ambiente 98/136 Le variabili d’ambiente sono un mezzo ele- mentare e pratico di configurazione del sistema: i programmi, a seconda dei loro compiti e del lo- ro contesto, leggono alcune variabili, e in base al contenuto si comportano. Esempio: la variabile PATH
  • 97. PATH 99/136 La variabile PATH indica tutte le directory dove la shell deve andare a guardare per trovare dei file eseguibili (i programmi per capirci) ´ E una variabile a tuti gli effetti: $ echo $PATH /bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr /X11R6/bin:/usr/games:/home/luigi/bin:/usr/sbin :/usr/X11R6/bin:/usr/games
  • 98. PATH e la directory corrente 100/136 La directory corrente normalmente NON viene inclusa nella variabile PATH Non ´ molto sicuro, e non dovrebbe mai essere e “prima” di quelle canoniche. Si pu` aggiungere in fondo a PATH, o ovviare cos` o ı: ./nome_file_eseguibile
  • 99. Ambiente (2) 101/136 L’ambiente consegnato a ogni programma che viene messo in esecuzione, controllato dalla shell che pu` assegnare ambienti diversi a programmi o diversi. La shell pu creare, modificare e leggere queste variabili,e utile per la realizzare file script.
  • 100. Gestione Variabili in BASH 102/136 Variabili di shell Una variabile definita quando contiene un valore, anche se vuoto. L’assegnamento di un valore si ottiene con una dichiarazione del tipo: nome_di_variabile=[valore] Esempio: [luigi@lg600 luigi]$ pluto=cane_di_topolino [luigi@lg600 luigi]$ echo $pluto cane_di_topolino
  • 101. Esportazione Variabili 103/136 Le variabili di shell hanno validit limitata all’am- bito della shell stessa. I comandi interni alla shell stessa sono al corrente di queste variazioni mentre i programmi che ven- gono avviati non ne risentono. Per i programmi esterni le variabili devono es- sere esportate. L’esportazione delle variabili si ottiene con il comando interno export.
  • 102. Esportazione Variabili (2) 104/136 Esempi $ PIPPO="ciao" $ export PIPPO Crea la variabile PIPPO e quindi la esporta. $ export PIPPO="ciao" In un colpo solo.
  • 103. Espansione/Sostituzione 105/136 Come gi` si intuiva da alcuni comandi che ab- a biamo visto la shell, prima di lanciare i programmi e/o comandi fa delle modifiche alla stringa che noi gli passiamo, meccanismo noto come espansione
  • 104. Passi dell’espansione 106/136 1. parentesi graffe; 2. tilde ; 3. parametri e variabili; 4. comandi; 5. aritmetica (da sinistra a destra); 6. suddivisione delle parole; 7. percorso o pathname.
  • 105. Espansione della tilde 107/136 Se una parola inizia con il simbolo tilde ( ) in- terpreta quello che segue, fino alla prima barra obliqua (/), come un nome-utente. E sostituisce questa prima parte con il nome della directory personale dell’utente stesso. ˜ da sola sottointende l’utente attuale Esempi $ cd ~ $ cd ~tizio/public_html
  • 106. Espansione di parametri e variabili 108/136 Gi` visto a sostituzione del parametro o della variabile con il suo contenuto. Esempio [luigi@lg600 luigi]$ pippo=PIPPO [luigi@lg600 luigi]$ echo $pippo PIPPO
  • 107. Sostituzione comandi 109/136 La sostituzione dei comandi consente di utiliz- zare quanto emesso attraverso lo standard output da un comando. Ci sono due forme possibili: $(comando) ‘comando‘ Apici “al contrario” altgr+apice Per ora Standard Output = testo riportato come risultato dal comando
  • 108. Espansione di percorso 110/136 I simboli *, ? e [ vengono intepretati ed espansi in serie di stringhe (che indicano percorsi) Vediamo solo il pi` importante: * u Corrisponde ad una qualsiasi stringa quindi se siamo in una directory con questi file: paperino paperone paperoga minnie topolino rm -f pape* -> rm -f paperino paperone paperoga
  • 109. Caratteri di protezione 111/136 A volte magari abbiamo bisogno di scrivere ef- fettivamente caratteri come: $ * { [ ... } Esistono 3 modalit`: a 1. Escape 2. Apici singoli 3. Apici doppi
  • 110. Escape 112/136 La barra obliqua inversa () rappresenta il ca- rattere di escape. Serve per preservare il signifi- cato letterale del carattere successivo, cio` evitare e che venga interpretato diversamente da quello che veramente. Esempio ls -l $fff 3B cerca di leggere il file che si chiama proprio $fff
  • 111. Escape (2) 113/136 Usato da solo (quindi con uno spazio dopo) serve per continuare una linea (nonostante si vada a capo) Esempio $ ls -l supercalifragilischespiralidoso viene interpretato come un unico comando su una linea
  • 112. Apici Singoli 114/136 Racchiudendo dei caratteri tra apici semplici (’) si mantiene il valore letterale di questi caratteri. Un apice singolo non pu essere contenuto in una stringa del genere. Esempio $ echo ’$0 $1 ... restano "inalterati".’ $0 $1 ... restano "inalterati".
  • 113. Apici Doppi 115/136 Racchiudendo una serie di caratteri tra una cop- pia di apici doppi si mantiene il valore letterale di questi caratteri, a eccezione di $, ‘ e . Esempio $ echo "Il parametro $0 contiene: "$0"" Il parametro $0 contiene: "-bash"
  • 114. Espressioni regolari 116/136 A (modern) RE is one or more non-empty branches, separated by ‘ | ’. It matches anything that matches one of the branches. A branch is one or more pieces, concatenated. It matches a match for the first, followed by a match for the second, etc. A piece is an atom possibly followed by a single ‘*’, ‘+’, ‘?’, or bound. An atom followed by ‘*’ matches a sequence of 0 or more matches of the atom. An atom followed by ‘+’ matches a sequence of 1 or more matches of the atom. An atom followed by ‘?’ matches a sequence of 0 or 1 matches of the atom.
  • 115. Espressioni regolari (2) 117/136 A bound is ‘ {’ followed by an unsigned decimal integer, possibly followed by ‘,’ possibly followed by another unsigned decimal integer, always fol- lowed by ‘ }’. The integers must lie between 0 and RE DUP MAX (255) inclusive, and if there are two of them, the first may not exceed the second. An atom followed by a bound containing one integer i and no comma matches a sequence of exactly i matches of the atom. An atom fol- lowed by a bound containing one integer i and a comma matches a sequence o i or more matches of the atom. An atom followed by a bound containing two integers i and j matches a sequence of i through j (inclusive) matches of the atom.
  • 116. Espressioni regolari di Bash 118/136 * ⇒ Corrisponde ad ogni stringa, NULL STRING inclusa. ? ⇒ Corrisponde ad ogni singolo carattere. [...] ⇒ Corrisponde con uno dei caratteri racchiusi fra parentesi. Una coppia di caratteri separati da una tilde denota un intervallo Apice e punto esclamativo invertono la selezione, se messi come primo carattere dopo [ i caratteri ] e − possono essere ricercati mettendoli al primo posto dopo la [
  • 117. Le classi POSIX 119/136 esistono anche delle classi POSIX (alnum,alpha,digit,space,upper,lower) che possono venir utilizzate con la sintassi [[:classe:]] Spiegazione: • alnum : caratteri alfanumerici • alpha : solo i caratteri alfabetici • digit : solo le cifre • space : i caratteri di spazio e TAB • upper : i caratteri MAIUSCOLI
  • 118. Le opzioni nelle espressioni regolari 120/136 Per scegliere fra diversi token opzionali si usano le parentesi tonde per delimitare l’insieme e il segno di pipe | per separare le opzioni e.g. ls -Fa | egrep ’(a|b)’
  • 119. Le ripetizioni nelle espressioni regolari 121/136 Per identificare token di lunghezza predefinita (fino a 255 ripetizioni) o intervalli di ripetizione (da n a m volte) si utilizzano le parentesi graffe con un numero, con dei numeri separati da virgole o con due numeri separati dal meno e.g. ls | egrep ’s{3}l+g{3}’
  • 120. Comandi - sed 122/136 Comando utile ma molto complesso, ne vediamo solo un uso: sostituzione di stringhe Riga per riga di un file (o dello standard output) sostituisce una stringa con un altra. Esempio abbiamo il file prova.html e vogliamo cambiare alcuni link senza editare il file: $ cat prova.html| sed ’s/<a href="immagini/<a href="images/’ > prova-modificato.html
  • 121. Un editor universale: vi 123/136 Per poter creare degli script ` necessario avere e un editor di testo. Linux dispone di molti editor, ciascuno con le sue peculiarit`, ma uno solo lo a troverete in tutti i sistemi Unix, e molto spesso ` e l’unico che avrete a disposizione. Benvenuti nel magico mondo di vi.
  • 122. Esecuzione 124/136 Il comando base per accedere a vi `, ovviamente, e vi, ma nelle distribuzioni pi` recenti ` presente una u e versione enhanced, con molte funzionalit` in pi`, a u che prende il nome di vim (Vi IMproved ).
  • 123. Descrizione dell’ambiente 125/136 Eseguendo il comando vi vi troverete davanti al- l’ambiente di editing, che appare inizialmente piut- tosto scarno. L’area di lavoro ` completamente e dedicata al testo da elaborare, ad esclusione del- l’ultima riga in basso che mantiene, di volta in volta, indicazioni sullo stato in cui si trova l’editor.
  • 124. Ambienti 126/136 vi infatti ` stato progettato in modo da distin- e guere anche concettualmente l’immissione del te- sto dall’interpretazione di comandi che operano sul testo inserito. In qualsiasi momento, per poter inserire un co- mando ` sufficiente tornare alla modalit` comandi e a premendo il tasto Esc. Inoltre il tasto Esc consente di annullare un co- mando non completato. Premerlo pi` volte di u seguito non ha effetti collaterali.
  • 125. Apertura di un file 127/136 L’esecuzione del comando vi senza argomenti, crea un nuovo buffer vuoto. Se invece vogliamo editare un file esistente possia- mo invocare vi seguito dal nome del file che voglia editare. vi nomefile In alternativa, una volta avviato vi, ` possibile e aprire un file con il comando :e :e nomefile
  • 126. Inserimento del testo 128/136 Premendo il tasto i oppure Ins si passa alla mo- dalit` di inserimento del testo, in cui ` possibile a e digitare del testo normalmente. Solitamante questa modalit` ` identificata dalla a e presenza della stringa – INSERT – nella barra di stato.
  • 127. Inserimento del testo (2) 129/136 Testo inserito dopo aver premuti il tasto [i] ~ ~ ~ ~ -- INSERT -- ` E da notare che il carattare (tilde) identifica le linee vuote.
  • 128. Modifica del testo 130/136 La pressione del tasto r attiva la modalit` mo- a difica del testo in cui il testo inserito sovrascrive il testo esistente. L’attivazione di tale modalit` ` identificata dalla ae presenza della stringa – REPLACE – nella barra di stato. Lo stesso risultato si ottiene premendo due volte il tasto Ins.
  • 129. Cancellazione del testo 131/136 Per cancellare del testo ` possibile utilizzare il e comando x che cancella il carattere identificato dal cursore, oppure il comando dd preceduto da un numero n il quale, appunto, cancella n righe a partire da quella occupata dal cursore. Testo inserito nelle slide precedenti continua sulla seconda riga e sulla terza ~ L’esecuzione del comando 2 dd quando il curso- re si trova sulla prima riga canceller` le prime due a righe e lascer` la terza. a
  • 130. Copia ed incolla 132/136 Il comando yy, eventualmente preceduto da un numero, copia in un buffer n righe a partire da quella in cui si trova il cursore. La funzione “Taglia” in realt` l’abbiamo gi` vista, dato che viene svolta a a dal comando dd che non si limita a cancellare una riga ma la copia in un buffer. Per incollare si usano i comandi p oppure P. Il primo incolla a par- tire dalla riga seguente a quella in cui si trova il cursore, il secondo a partire da quella in cui si trova il cursore.
  • 131. Ricerche nel testo 133/136 Per cercare una stringa all’interno di un file di testo si usa il comando /. Tra l’altro questo co- mando svolge la stessa funzione in molte situazioni (all’interno di man, less, more, ecc.). Dopo la pressione del tasto / ` possibile digitare e la stringa da cercare che apparir` nella barra di a stato. Per ripetere l’ultima ricerca effettuata si usa il tasto n.
  • 132. Salvataggio e chiusura 134/136 Per salvare il testo editato, si usa il comando :w, mentre per uscire dal programma si usa il comando :q. I due comandi possono esseri combinati (:wq) per salvare ed uscire nello stesso momento. Inoltre e’ possibile forzare l’uscita senza salvare (con conseguente perdita delle modifiche), con il comando :q!.
  • 133. Riepilogo (1) 135/136 • vi nomefile, apre il file in vi • Esc torna alla modalit` comandi a • :e (edit) apre un file • i o Ins inserisce del testo • r o due volte Ins sovrascrive il testo • [n] dd taglia n righe • [n] yy copia n righe • p incolla dopo la riga corrente • P incolla a partire dalla riga corrente
  • 134. Riepilogo (2) 136/136 • / cerca all’interno del testo • n ripete l’ultima ricerca • :w salva • :q chiude • :q! chiude senza salvare