Elezioni rappresentanze studentesche 2018/2020 - Unibs
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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