Ragazzi cari (e ragazze care, ma non ce ne sono mai da queste parti
), vorrei condividere con voi questo script bash che ho messo a punto qualche giorno fa e per me si è rivelato una manna dal cielo.
Il problema di partenza è che io non ho una connessione stabile e questa connessione è pure lentina in download (sui 500kb/s), ovviamente rispetto agli standard del progetto. Non voglio sputare nel piatto in cui mangio.
Vi lascio immaginare quale sconforto e frustrazione possa avere il fatto che ci metto un casino a scaricare 8 wu (il mio procio è quad core, ma ne computo 2-3 alla volta) e vederle fallire tutte quante a distanza di 10 minuti l'una dall'inizio dell'altra, dopo ore di attesa! Bene, la cosa curiosa è che l'app di Atlas contempla la mancanza di rete, ma soltanto previa sospensione dell'attività di rete da boinc manager. Ecco ordunque la mia idea... se manca la connessione, sospendo la rete sul manager e tutte le wu di Atlas (che, se non lo sapete, sono rete-dipendenti), automaticamente vanno in attesa di esecuzione. Poi è un gioco da ragazzi far ripartire l'esecuzione. Questo in sostanza era il banale algoritmo che c'è dietro, ora vi mostro il codice che gira su Linux.
AtlasWorkunitSaver.sh#!/bin/bash
flag=0
while true
do
wget -q --tries=1 --timeout=15 --spider http://atlasathome.cern.ch/
if [[ $? -ne 0 ]]; then
echo `date +%H':'%M':'%S`" Sospensione boinc network..."
cd /home/luis/Applicazioni/boinc && ./boinccmd --set_network_mode never
flag=1
else
echo `date +%H':'%M':'%S`" Connessione OK."
if [[ $flag ]]; then
cd /home/luis/Applicazioni/boinc && ./boinccmd --set_network_mode auto
flag=0
fi
fi
sleep 15
done
Non mi chiedete di spiegare cosa fa, che non ne ho voglia. Rispondo a domande mirate.
Tenete conto che il path di boinc dovete modificarlo in base alle vostre esigenze e pure il comando boinccmd.
A proposito, io come strategia del progetto adotto la seguente:
-avvio il download per il max di wu possibili (smanettando con ncpus, comunque 40 è limite del progetto);
-lascio il pc a scaccolare su altri progetti con wu lunghe e sospendo quelle di Atlas;
-terminati tutti i download, avvio lo script e riprendo il lavoro su Atlas;
-finito il lavoro, si riparte da capo.