Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio12:esercitazioni:esercitazione4bis

Esercitazione 4bis

Dove si continua a sperimantare la bash e si scrivono i primi script.

Esercizio 1: Esecuzioni periodiche: il cron system

Utilizzare crontab per fare in modo di ricevere, una volta al minuto, una e-mail contenente la stringa “Pippo Pluto e Paperone …”.

crontab permette di registrare dei comandi e delle periodicita' in un file (che chiameremo crontabFile) e poi di registrare il file in modo che il cron system di Linux mandi in esecuzione il comando automaticamente agli istanti prefissati. Il crontabFile e' costituito da una sequenza di linee di sei campi

minuti ore giorni mesi giorniDellaSettimana comando

i primi 5 servono a specificare la periodicita' (0-59 per i minuti, 0-23 per le ore, 1-31 per i giorni, 1-12 per i mesi e 1-7 per i giorni della settimana) mentre il comando e' un qualsiasi comando unix. Ogni volta che il tempo corrente del sistema corrisponde a una richiesta di periodicita', il comando Unix viene eseguito e lo standard output del comando viene inviato all'utente che lo ha registrato, via e-mail. Se in un campo si specifica * il matching e' sempre verificato. Ad esempio:

bash:~$ cat crontab.cron
0   8   *   *   1    echo "Lunedi' mattina ore 8"
*   *   *   *   *    echo "E' passato un minuto"

in questo caso il primo comando viene eseguito ogni lunedi' alle 8 mentre il secondo viene eseguito ogni minuto. Consultare man crontab per capire come effettuare la registrazione del cronfile.

Esercizio 2: Cron e segnali ....

Usare crontab e kill per inviare un segnale SIGUSR1 ogni minuto alla shell corrente ed usare trap per far stampare alla shell un breve messaggio ogni volta che riceve un segnale SIGUSR1.

kill permette di inviare un segnale ad un processo di cui si conosce il pid. Usare ps o $$ per ottenere il pid della shell corrente . trap invece permette di registrare un comando da effettuare all'arrivo di un segnale.

Esercizio 3: Rimozione periodica dei core file

Utilizzare crontab per rimuovere tutti i file di core di un determinato utente all'inizio di ogni giornata lavorativa.

Suggerimento: Per non fare troppi danni, realizzare prima una versione che lista semplicemente i file da rimuovere senza cancellare niente.

Esercizio 4 : getting started

Scrivere uno script bash gettingStarted che stampi il suo nome, il numero degli argomenti ed i primi tre argomenti (se esistono). Come

bash:~$ ./gettingStarted mio tuo suo
Script ./gettingStarted con 3 argomenti
Primo parametro mio
Scondo parametro tuo
Terzo parametro suo
Ciao Mondo
bash:~$ 

Esercizio 5: mycd

Scrivere una funzione Bash che implementa una versione personalizzata del builtin cd in cui prima viene eseguito il cambio di directory per mezzo del nomale builtin cd e poi viene eseguita una stampa formattata che ricorda la directory di partenza e quella di arrivo. Es:

bash:~$ mycd PROVA
mycd: successo! /home/s/susanna --> /home/s/susanna/PROVA
bash:~/PROVA$

Se il cambio della working directory non ha successo mycd stampa il normale messaggio di errore del builtin cd.

Esercizio 6: mygzip

mygzip e' uno script bash che prende come parametro una directory ed una lista di file

bash:~$ mygzip dir file1 ... filek

applica il comando gzip a tutti i file file1 … filek presenti nella directory dir

Esercizio 7: dirdiff

Realizzare lo script dirdiff prende tre parametri

bash:~$ dirdiff dir1 dir2 dir3

ed effettua la differenza fra la directory dir1 e la directory dir2 scrivendo i lrisultato in dir3. In pratica copia in dir3 ogni file di dir1 che NON e' presente in dir2 con lo stesso nome.

informatica/sol/laboratorio12/esercitazioni/esercitazione4bis.txt · Ultima modifica: 12/03/2012 alle 08:18 (10 anni fa) da Susanna Pelagatti