Modifiche software e script
Durante l'esecuzione degli script dei servizi, le fasi che occupano più tempo sono quella di scompattamento dell'archivio all'inizio del processamento e quella di creazione dell'archivio di output al termine dell'elaborazione. La creazione di una catena di servizi, dove per ogni servizio vengono richiamate queste due fasi farebbe inutilmente aumentare il tempo di processamento. Quindi si è deciso di creare uno script che crei un environment ad hoc per l'esecuzione dei servizi concatenati in modo da poter disabilitare le fasi di scompattamento e creazione dell'archivio finale durante gli step intermedi dell'esecuzione della catena e lasciare queste fasi solo all'inizio ed al termine del processammento.
Lo script che richiama i vari servizi si chiama fullchain.sh. Questo script oltre a scompattare l'archivio di immagini all'inizio e creare l'archivio di output al termine dell'elaborazione, deve disabilitare o limitare il
funzionamento di alcuni comandi di shell richiamati all'interno degli script in modo da disabilitare le fasi di
scompattamento e creazione dell'archivio finale interne per ogni singolo servizio.
I comandi di shell disabilitati dallo script fullchain.sh sono i seguenti:
- rm: Cancellazione di file o directory disabilitato.
- rmdir: Cancellazione di directory disabilitato.
- exit: Vengono intercettati dei codici di uscita degli script in modo da verificare
se vi sono stati problemi durante l'esecuzione.
- unzip: Scompattamento di un archivio Zip disabilitato.
- zip: Creazione dell'archivio di uscita disabilitato.
- mkdir: Creazione di directory disabilitato.
- mv: Spostamento di file o directory modificato in modo che se fallisce ritorna comunque
un codice di successo.
Disabilitando e/o limitando tutti i comandi sopra elencati, alla fine di ogni step della catena lo script fullchian.sh
deve preoccuparsi di ricreare gli input corretti per il servizio successivo, come se si fosse appena scompattato l'archivio di immagini.
Per poter fare questo, lo script fullchian.sh, nell'esecuzione di un servizio concatenato tiene traccia dei nuovi
file creati durante il singolo step, in modo da poter riconoscere quali siano i file prodotti dall'elaborazione del servizio richiamato. Una volta creata la lista dei file nuovi e confrontata con una lista di file creata prima di richiamare il servizio, lo script è in grado di cancellare i file vecchi e mantenere quelli nuovi.
In questo modo allo step successivo il servizio concatenato si troverà solamente i file prodotti dallo step precedente.
Nell'appendice A.2 è riportato il codice completo dello script fullchian.sh.
Mario Cavicchi
2007-07-25