Introduzione a UNIX - passo cinque 
 

5.1 Sicurezza del filesystem (permessi di accesso)

 

5.2 Cambiare i permessi

chmod (changing a file mode)

Olo il proprietario del file puo' usare chmod per cambiare i permessi di un file. Le opzioni di chmod sono le seguenti
         Simbolo  Significato
           u      user
           g      group
           o      other
           a      all
           r      read
           w      write (and delete)
           x      execute
           +      aggiungi il permesso
           -      cancella il permessoer esempio, per cancellare il permesso di scrittura (w) ed eseguibilita' (x) al file biglist per gruppo ed altri, si dia:
        dfisa2.ts.infn.it>% chmod go-rwx biglist
Gli altri permessi non saranno alterati.

Per dare il permesso di lettura e scrittura a tutti sul file biglist,

        dfisa2.ts.infn.it>% chmod a+rw bigfile

Provare a cambiare i permessi di un file
Usare  ls -l per verificare che i permessi sono cambiati.


5.3 Processi e Jobs

Un processo e' qualsiasi programma che e' in esecuzione, identificato da un PID (process identifier) univoco.  Per visualizzare informazione sui processi, incluso il loro PID e stato, dare in comando:
        dfisa2.ts.infn.it> ps
Un processo puo' essere in "foreground", "background" oppure "sospeso". In genere non si ritorna a vadare il prompt di UNIX finche' l' esecuzione del processo non e' terminata.

Alcuni processi richiedono un tempo lungo per terminare e, nel frattempo, impegnao completamente  una finestra terminale. In tali casi, e' utile il meccanismo di esecuzione "in background" di UNIX.  Mettendo in background un job lungo, si riottiene il prompt di UNIX e quindi si possono eseguire altri comandi, mentre il processo in "background" continua ad eseguire.

Mettere in background un processo

Per mettere in background un processo aggiungere un &  alla fine della linea di comando. Per esempio il comando sleep attende un dato numero di secondi pima di continuare. Provare con
        dfisa2.ts.infn.it> sleep 10
Il processo attendendera' 10 secondi  prima di ridare il prompt. Finche' non torna il prompt, non si puo' far nulla.
Per eseguire in background:
        dfisa2.ts.infn.it> sleep 10 &
        [1] 6259
Il  & esegue in background permettendo di lanciare piu' jobs mentre si attende che altri programmi finiscano.  La prima linea dell' esempio precedente  e' data dall' utente; la linea successiva, indicante il numero di un job ed il corrispondente PID, proviene dalla macchina.

Mettere in background un processo

Al prompt dare:
        dfisa2.ts.infn.it> sleep 100
Si puo' sospendere un processo in foreground digitando control Z . Dopo di che dare il comando
        dfisa2.ts.infn.it> bg
Nota: non mettere in background processi intrinsecamente interattivi.

5.4 Elencare processi sospesi o in background

Quando un processo e' attivo, in background o sospeso, gli viene associato un numero di job. Per esaminare la lista dei job attivi
        dfisa2.ts.infn.it> jobs
Un esempio di output potrebbe essere il seguente:
        [1]     Suspended               sleep 100
        [2]     Running                 netscape
        [3]     Suspended               pico
Per far riprendere un processo sospeso (mettere in foreground)
        dfisa2.ts.infn.it> fg %job_number
Per esempio per far riprendere   "sleep 100"
        dfisa2.ts.infn.it> fg %1
 

5.5 Cancellare un processo

Talvolta e' necessario cancellare un processo  (per esempio se un programma sta eseguendo un loop infinito)

Per eliminare un job in foreground basta dare  ^C (control c). Per esempio,  dopo aver dato il comando
sleep 100,  lo si puo' cancellare con ^C.

Per jobs sospesi o in background, si puo' dare

        dfisa2.ts.infn.it> kill %job_number
Per provare, dare  sleep 100 &  e poi dare  jobs per vederne il numero di job. Se il corrispondente numero e' 4
        dfisa2.ts.infn.it> kill %4
Esaminare la lista dei jobs per vedere se ha funzionato.

Alternativamente, i  processi possono essere cancellati dopo aver ricavato il loro identificatore  (PIDs) mediante ps  ed
usando poi il  comando  kill PID

Se un processo non scompare con kill, usare l' opzione  -9 option, dando cioe':

        dfisa2.ts.infn.it> kill -9 PID
Nota:  Non e' possibile eliminare i processi di altri utenti.

Riassunto

   ls -lag                  lista i permessi di accesso per tutti i files 
   chmod [options] file     modifica i permessi di accesso per il file "file"
   command &                esegue comandi in background
   ^C                       elimina il job che esegue in foreground
   ^Z                       sospende il job che esegue in foreground
   bg                       pone in background il job sospeso
   jobs                     elenca i jobs correnti
   fg %1                    pone in foreground il job numero 1
   kill %1                  elimina il job numero 1
   ps                       elenca i processi correnti
   kill 26152               elimina il processo numero

Adattato da "UNIX Tutorial for Beginners" di M.Stonebank@surrey.ac.uk (URL: http://www.ee.surrey.ac.uk/Teaching/Unix/ )
Torna all' indice