giu 032013
 

Recentemente un mio collega doveva eseguire più processi paralleli su un server (circa 20 nel nostro caso specifico), ogni processo faceva delle “cose”, e questo può richiedere un tempo più lungo o più corto rispetto agli altri, una volta che un processo termina il suo compito deve leggere da un file di testo la prima riga che indica l’ID di un nuovo lavoro, rimuove tale ID dalla parte superiore del file di testo e inizia ad elaborarlo.

Problema: su un lungo periodo (una elaborazione con più di 50K ID) capita “spesso” che 2 processi terminano nello stesso tempo e così entrambi hanno lo stesso ID causando problemi a tutto il processo, si è cercato di utilizzare un file di lock semplice facendo un “touch” quando il processo apriva il file con l’elenco di ID, ma sembra che questa operazione è troppo lento e abbiamo avuto ancora qualche caso di concorrenza fallito.

La soluzione è stata utilizzare la funzione di bash flock Continue reading »

flattr this!

ott 172012
 

In un prececente articolo Ho parlato dei comandi cron e crontab che sono il modo standard per pianificare le cose ricorrenti su un sistema Gnu/Linux.

Ma a volte è necessario fare una cosa ad una specifica data ed ora per una volta sola e per queste attività l’opzione migliore è di usare at, un altro modo di utilizzare at è per eseguire un comando più tardi quando il computer non sarà troppo carico.

O un altro motivo potrebbe essere che si desidera eseguire un comando che richiede un sacco di tempo per finire e dovete disconnettervi dal server, at potrebbe essere utilizzato in questa situazione, ma per queste attività vi suggerisco di dare un’occhiata agli articoli su come eseguire comandi in background e l’ utilità screen

Continue reading »

flattr this!