Elezioni rappresentanze studentesche 2018/2020 - Unibs

Pagina creata da Pasquale Grasso
 
CONTINUA A LEGGERE
Elezioni rappresentanze studentesche
                 2018/2020

• Si vota nelle giornate di:
   – Mercoledì 28 novembre dalle 9.00 alle 18.00
   – Giovedi' 29 novembre dalle 9.00 alle 14.00
• Possono votare tutti gli studenti (in corso, fuori
  corso e in attesa di laurea) e i dottorandi
• Il seggio relativo al Dipartimento di Ingegneria
  dell'Informazione si trova in aula N6
Richiamo: copy & paste
• In una finestra putty le funzioni di copy & paste sono realizzabili
  direttamente col mouse
• Selezionando un pezzo di testo col mouse di ottiene
  direttamente il copy
• Cliccando col tasto destro si ottiene il paste

• Ovviamente è possibile il copy&paste tra la finestra putty e le altre
  finestre
Editing: vi
• vi è un text editor con interfaccia a caratteri di antica tradizione
• Su molti sistemi in realtà dando il comando vi se ne invoca una
  versione “modernizzata” denominata vim (vi improved)
• Dare il comando vimtutor per entrare in un breve tutorial
• In generale il comando per iniziare è: vi nomefile
• vi ha due modalità di funzionamento
   – la modalità “Command” (o “Normal”) nella quale ciò che viene digitato
     sulla tastiera è interpretato come comando (NON come testo da inserire)
   – la modalità “Editing” (o “Insert”) nella quale ciò che viene digitato sulla
     tastiera è interpretato come testo da inserire (salvo caratteri speciali come
     frecce e backspace in vim)
• La modalità iniziale è “Command”: per passare a “Editing” si usa
  di norma il comando i (altre possibilità sono nel tutorial)
• Per tornare a “Command”: digitare ESC
Editing: vi(m)
• E’ facile perdersi tra le due modalità e perdere contestualmente la
  pazienza
• Le prime volte se ci si perde è meglio ripartir da capo: ESC per
  tornare in normal mode e :q! per uscire senza salvare
• Una volta capito il meccanismo e presa confidenza, vi può
  diventare uno strumento di estrema produttività
• Dopo i primi passi con vimtutor, può essere utile riferirsi a
   – http://www.vim.org/
     sito ufficiale del programma
   – http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
     per documentazione e manualistica
   – http://help.ubuntu.com/community/VimHowto
     per un HOWTO
Prova di utilizzo vi
• Saper creare/modificare un “Hello world” con vi è già un buon
  segno
• Quindi nel file hello.c contenuto nella directory esempio
  ora dovreste riuscire a:
  - modificare il testo p.e. far effettuare due fprintf distinte con i
  due saluti (usando copia e incolla), scrivere un altro nome
  anziche’ Brescia
  - sostituire Hello con Ciao (usando il comando di ricerca e
  sostituzione)
  - salvare il testo modificato in un file con un altro nome e
  uscire
• Dovreste anche riuscire a creare da zero un nuovo file di nome
  “gioia_vi_hai” che contiene il seguente testo: “Sono contento
  di aver imparato vi”
Editing: mcedit
• Ma se non siete contenti ...
• “You may have decided you hate vi . So be it!”
  vi è l’editor standard la cui presenza è garantita su qualunque
  UNIX, ma se non lo si sopporta si può tentare con mcedit
• Si tratta di un editor “stile MS-DOS”, addirittura dotato di menu a
  tendina e di un help interno
• I comandi impartibili sono visualizzati in basso e sono in
  corrispondenza con i tasti funzione (p.e. all’avvio, F1 apre l’help,
  F9 apre i menu a tendina, F10 esce, etc.)
• “The editor is very easy to use and requires no tutoring”
• Provare a svolgere anche con mcedit i compiti specificati nel
  lucido precedente
Compilazione di un programma C
• Per compilare un semplice programma C:
  gcc -o nomeeseguibile nomesorgente
• Per eseguirlo basta dare al prompt il nome dell’eseguibile ...

• ... ma con ./ davanti perchè la directory corrente di norma non è
  nel path

• Provare a compilare ed eseguire i propri vari hello.
Un processo (in loop infinito)
• Per fare pratica con alcuna operazioni relative ai processi, usiamo
  un programma C che esegue un loop infinito (loop.c nella
  directory loop)
• Per non caricare troppo il processore è inserita una chiamata a
  sleep nel corpo del loop:
  - modificare il parametro di sleep da 0.001 a 1
  - salvare, compilare loop.c ed avviare l’eseguibile risultante
• A questo punto perdiamo il prompt ... ma abbiamo due possibilità:
  digitare CTRL-C per terminare il processo oppure
  digitare CTRL-Z per porre il processo in stato Stopped
• Per avviare un processo in background (viene eseguito senza
  occupare il prompt) digitare & alla fine della linea di comando
• Per avviare un processo a bassa priorità: nice
• Quindi digitiamo: ./loop & oppure nice ./loop &
Elencare i processi: comando ps
• ps: visualizza lista di processi. Ha molte possibili opzioni e loro
  varianti storiche che si mescolano in modo confuso.
  L’output è composto da varie colonne ciascuna con
  un’intestazione “autoesplicativa”. Si possono selezionare le
  colonne da visualizzare (tra le tante possibili) con l’opzione -o
• Alcuni esempi:
   – ps :visualizza i processi relativi alla sessione di lavoro corrente su 4
         colonne (PID, TTY, TIME, CMD).
   – ps -e :visualizza tutti i processi esistenti (sempre con formato 4 colonne)
   – ps u -e :visualizza tutti i processi esistenti con formato esteso
   – ps aux :equivalente a ps u -e
   – ps -u nomeutente :visualizza tutti i processi di un utente
   – ps u -u nomeutente :visualizza tutti i processi di un utente con
                                   formato esteso
Esempi d’uso di ps
• Una volta avviato e stoppato (con CTRL-Z) il processo loop:
  - ps mostra il processo interprete dei comandi bash, il processo
  loop e ps stesso
  - ps u mostra informazioni aggiuntive, p.e. tasso di utilizzo CPU
  e memoria, occupazione di memoria in pagine (RSS = Resident
  Set Size, VSZ = Virtual Memory Size), stato del processo
  (R=Running, S=Sleeping, T=sTopped, Z=Zombie,... ), start time,
  ... purtroppo man ps non documenta bene tutto ciò
  - ps -u studente compare un processo in più di proprietà di
  studente (quello che gestisce la connessione SSH)

• Usando man, capire come farsi mostrare anche l’identificatore
  del processo padre dei nostri processi
Elencare i processi: comando top
• Il comando top presenta un insieme di informazioni statistiche globali sul
  sistema e una lista di processi con informazioni disposte su colonne con
  intestazioni “autoesplicative”
• top aggiorna dinamicamente il suo output
• top accetta comandi interattivamente, i più semplici sono:
  h per avere un help
  spazio per aggiornare immediatamente i dati visualizzati
  s per stabilire l’intervallo di tempo tra due aggiornamenti
  O per scegliere il criterio di ordinamento tra vari possibili
  R per invertire il senso di ordinamento (crescente/decrescente)
• Comandi di ordinamento veloci
       N    sort tasks by pid (numerically)
       P   sort tasks by CPU usage (default)
       M   sort tasks by resident memory usage
       T   sort tasks by time / cumulative time.

• q per uscire
Comando top
• Il man di top è un po’ più informativo di quello di p s

• Cercare nel man di top il significato delle colonne PR, NI,
  SHR

• Verificare quanti Page Fault hanno avuto i processi e quanto
  di loro è swappato

• Soddisfare altre curiosità ...
Elencare i processi: comando pstree
• pstree presenta in formato “ASCII art” l’albero genealogico di
  tutti i processi del sistema
• E’ possibile specificare un singolo utente del quale visualizzare il
  sistema di processi
• Con l’opzione -p viene visualizzato anche il PID
• Con l’opzione -h si evidenzia la genealogia del processo corrente
  e con -H quella di un certo processo (identificato tramite PID)
• Con l’opzione -u si visualizzano i cambi di proprietario nella
  genealogia
Terminare processi
• Il comando kill PID si usa tipicamente per imporre la
  terminazione di un processo con un certo PID
• In generale kill serve per inviare un segnale di un certo tipo
  (non necessariamente letale) ad un processo
• Non sempre un semplice kill è sufficiente a terminare un
  processo: kill -9 PID invia un segnale di terminazione più
  “convincente”
• killall nomeeseguibile si usa per terminare tutti i
  processi che sono stati lanciati con un certo nome di eseguibile
• Anche killall in generale invia un segnale ad un gruppo di
  processi ed è più letale con l’opzione -9

• Killare tutti i processi loop presenti
Esecuzione in background e jobs
• Eseguire nice ./loop & e poi nice ./loop seguito da
  CTRL-Z
• Il comando jobs elenca i processi eseguiti in background (con &)
  e posti in stato Stopped (con CTRL-Z)
• I processi inclusi tra i job hanno un proprio numero identificativo
  (diverso dal PID e riferito solo alla lista dei job) evidenziato tra
  parentesi quadre
• Per riferirsi ad un processo tramite il suo numero di job si usa la
  notazione %N (ovviamente un processo ha sempre anche un PID)
Esecuzione in background e jobs
• Il comando bg %N passa un processo dallo stato Stopped a quello
  di Running in background (senza %N si seleziona il job corrente,
  evidenziato con + nella lista)
• Applicare bg al processo Stopped: rieseguendo jobs si
  vedranno due processi Running
• Il comando fg %N passa un processo dallo stato Stopped o
  Running in background a quello di Running in foreground con
  “occupazione” del prompt (senza %N, selezione come sopra)
• Applicare fg a uno dei due processi in background: si perde il
  prompt e lo si riprende con CTRL-Z
• Rieseguendo jobs si vedranno ...
• Il comando kill accetta come parametri anche i numeri di job
• Eliminare tutti i processi loop
Processi duraturi: il comando nohup
• I processi avviati in un sessione di lavoro (anche in background)
  vengono terminati quando si esce dalla sessione interattiva
• Per avviare un processo che sopravvive alla sessione interattiva
  usare: nohup comando &
• Il processo avviato proseguirà anche dopo il logout dell’utente,
  fino alla sua terminazione naturale o forzata
• Ogni eventuale output diretto a schermo sarà salvato in un file
  denominato nohup.out
Operazioni remote
• Il comando ssh user@hostname permette di aprire una sessione di lavoro
  protetta con cifratura su un host remoto
• Si usa l’opzione -p per specificare la porta da usare (default 22)

• Il comando scp permette di eseguire un cp in modalità remota e sicura
  specificando per uno o entrambi i file anche il nome utente e il nome host
  remoto (-P per specificare la porta da usare)
• Creare un file di testo denominato vm-NN.txt sulla propria macchina e
  trasferirlo sulla macchina soa-70 collegandosi come utente studente
• Il comando sftp user@hostname permette di aprire una sessione ftp
  sicura per trasferimento di piu’ file
  (-oPort=numeroporta per specificare la porta da usare)
• Vedere il man per i comandi da usare in una sessione ftp
• Ottenere via sftp il file provaFTP.txt presente sulla macchina soa-70
  nella home directory di studente
Due domande tipiche
• Chi c’è in casa ?
• Il comando who elenca gli utenti attualmente collegati alla
  macchina
• La tal macchina è accesa e raggiungibile ?
• Il comando ping causa l’invio di pacchetti “sonda” ad una
  macchina chiedendo risposta.
  Se la macchina è attiva, raggiungibile e accetta la richiesta,
  giungono pacchetti di risposta e vengono presentate indicazioni
  sul tempo di andata e ritorno
• Pingare la soa-70 (o un’altra vm), www.unibs.it e
  www.google.it: verificare la differenza dei tempi di andata e
  ritorno
• Pingare www.microsoft.com e www.linux.org
Risorse in rete: lynx e wget
• lynx è un Web browser con interfaccia a caratteri, tra le
  numerose opzioni, notare la -dump che serve a inviare l’URL
  specificato sullo standard output
• Usare lynx per visitare un sito noto (provare a fare una
  ricerca del proprio nome e cognome su Google con lynx)

• wget permette il download di risorse in rete in modo non
  interattivo. La pagina man è molto ricca e contiene utili esempi
  pratici
• Scaricare il seguente file usando wget
  ftp://ftp.pbone.net/mirror/archive.fedorapro
  ject.org/fedora/linux/core/5/i386/os/Fedora/
  RPMS/dos2unix-3.1-24.2.1.i386.rpm
Installazione di software: rpm
• In svariate distribuzioni (non tutte), il software viene distribuito e
  installato usando il formato rpm (RedHat Package Management)
• Il primo passo è procurarsi il file .rpm appropriato (da CD, da
  mirror in rete, ...)
• Il secondo passo è usare il comando rpm per l’installazione (e
  successivamente per l’aggiornamento, la disinstallazione, etc.)
• Il comando rpm ha numerosissime opzioni le più immediate sono:
  rpm --install nomefilerpm                     per installare
  rpm --erase nomepackage                       per disinstallare
  rpm --upgrade nomefilerpm                     per aggiornare
  rpm -qa                                       elenca package installati
• Manuale in linea:
  http://www.rpm.org/max-rpm/
Esempi utilizzo rpm
• Installazione del package dos2unix per la trasformazione di
  file di testo:
   1) scaricare il file dos2unix-3.1-24.i386.rpm (già fatto !)
   2) verificare se e' gia' presente una versione di dos2unix
   3) a seconda dell'esito del punto 2 installare o aggiornare il
       package usando rpm
   4) usando le opportune opzioni di rpm -q verificare le
       informazioni generali sul package installato e l’elenco dei
       file in esso contenuti
• Verificare a quale package appartiene l’eseguibile
  /usr/bin/wget
• Nel package trovato individuare quali file di configurazione e
  quali file di documentazione sono presenti
Installazione di software: tarballs
• Il software libero viene spesso fornito sotto forma di file tar con i
   sorgenti C da compilare
• I passaggi principali sono:
1) Scaricare il file tar e scompattarlo
2) Leggere le istruzioni di compilazione/installazione (spesso un file
   README e/o INSTALL o simili prodotti dallo scompattamento)
3) Eseguire con attenzione le istruzioni (sperando non si verifichino
   errori di compilazione, in caso decifrarli o rinunciare)
4) Verificare il funzionamento (dovrebbe esistere anche una pagina
   man del programma installato)
• Eseguire i passi sopra indicati per il seguente tarball:
   http://ftp.gnu.org/pub/gnu/units/units-
   1.55.tar.gz
Installazione di software: tarballs
• Per concludere in bellezza e nello sfrenato divertimento:

copiare il tarball: /root/tarunits/mptris-1.9.tar.gz
in una directory di nome gioco all'interno di
/home/studente

Fare gli stessi passi eseguiti per il tarball precedente e provare il
nuovo videogame così installato
"Compiti" a casa
• Rinforzare la pratica di editing di file di testo
• Creare una nuova directory di nome testi dentro la directory
  /home/studente/esempio
• Creare dentro testi un file di testo di nome studenti.txt
  contenente alcune righe strutturate tipo:
  NOME,COGNOME,MATRICOLA
• Effettuare ricerche e sostituzioni a piacimento all'interno del file
  (ad esempio cercare un certo cognome e sostituire tutte le sue
  occorrenze con un altro cognome) e salvare ogni volta la versione
  modificata con un altro nome
• Alla fine nella directory ci saranno alcuni file di testo con nomi e
  contenuti diversi (ma le cui righe sono strutturalmente simili)
"Compiti" a casa
• Tenersi allenati con la lettura di man e l'uso di file di testo
• Produrre un file di testo di nome DaCercare che contiene alcune
  righe ognuna contenente un numero

• Capire come usare grep per trovare all'interno di tutti i file
  precedentemente creati nella directory testi tutte le righe che
  contengono uno dei numeri presenti nel file DaCercare

• Identificare l'ulteriore opzione da usare per fare quanto sopra
  richiesto senza mostrare il nome del file che contiene ciascuna riga
  trovata
Puoi anche leggere