Newsgroup: it.comp.os.linux.iniziare
Titolo: Operazione periodica

Vorrei eseguire un'operazione appena connesso a Internet, ma solo una
volta al giorno.  Avevo pensato ad uno script in ip-up.d che scrive un
file vuoto in /var la prima volta che viene eseguito, e se mi connetto
piu` di una volta al giorno, lo script controlla quel file e si
interrompe se nota che ha la data odierna, oppure lo cancella se ha la
data del giorno prima e prosegue.
E' possibile risolvere anche con cron.daily, vincolando l'esecuzione
dello script all'essere gia` connesso?
Massimiliano
-- 
The Practical Penguin's Notebook - 
http://practicaltux.sourceforge.net
Guida veloce: configurazione della posta (Fetchmail, Exim o Postfix,
Mutt).
Guide all'uso per newbie: Mutt, Emacs.

 dello script all'essere gia' connesso?
Certo che si'. Basta che controlli se esiste ppp0...
Davide

 Certo che si'. Basta che controlli se esiste ppp0...
E, se non esiste, continua a provare durante la giornata o fallisce e
non riprova fino al giorno successivo?  Questo era il mio dubbio sulla
fattibilita` della cosa da cron.


 E, se non esiste, continua a provare durante la giornata o fallisce e
Dipende da te, puoi farlo provare una volta all'ora, una volta al giorno,
ogni 20 secondi...
La crontab te la gestisci un po' come vuoi.
man crontab per ulteriori info
Davide

 Dipende da te, puoi farlo provare una volta all'ora, una volta al
Ti ringrazio.  Non era per evitarmi di leggere il Fine ;-) Manual, era
giusto per sapere se la funzionalita` c'era e valeva la pena tuffarsi.


 fattibilita` della cosa da cron.
Naturalmente no, o meglio: e` una cosa che devi prevedere tu. Se fai uno
script che  viene richiamato da cron  e continua a girare  per conto suo
fino a che  non trova l'interfaccia ppp0, dovrebbe andar  bene, ma se lo
script termina, cron  considera che e` stato eseguito e  non lo riesegue
piu` fino al giorno successivo. Se  ci pensi, non puo` essere che cosi`.
(-:
-- 
  _      ___ ____
 | | /| / (_)_  / >>> aka Luciano Di Lucrezia
 | |/ |/ / / / /_   . Radiance BBS: 
+39-0362-332921
 - JOIN THE FUN NOW!
 |__/|__/_/ /___/   . Ban Micro$oft from Universities! Support Free Software.
 
Il cuore sboccia una volta sola, e si prepara in una lunga primavera. (Kay)

 dello script all'essere gia` connesso?
if ifconfig | grep -q ^ppp; then
	# sono connesso
	lancia lo script di prima
else
	# non sono connesso
	exit
fi
Pero' andrebbe eseguito ogni minuto o giu' di li' con crontab. Meglio
usare ip-up.
Ciao,
// Umberto Salsi
//
// 
http://digilander.iol.it/salsi
 <-- GnuPG key available here!
// Key fingerprint = B957 FB00 10F5 A770 4A26  2D80 BE2C F6CD 77E9 29AE

 fi
Avevo comunque optato per questa soluzione.  Avere cron che sparava a
caso ogni tot secondi non mi garbava affatto, e anche li` avrei dovuto
scrivere un file di controllo altrimenti l'operazione sarebbe stata
eseguita *piu`* di una volta al giorno.  Che ne pensi di questo?
CHECK=.daily
RUN=false
if [ ! -e "$CHECK" ]; then
    RUN=true
fi
if [ -e $CHECK ]; then
    CHECK_DATE=`ls -l $CHECK | tr -s ' ' | cut -f6,7 -d' '`
    TODAY_DATE=`date +%b%e`
    if [ "$CHECK_DATE" != "$TODAY_DATE" ]; then
	RUN=true
    fi
fi
if [ $RUN = true ]; then
...
Avevo trascurato di dire che l'importante e` che venga eseguito quando
c'e` un cambio di data, non a distanza di un giorno.  Ovvero, se vado
online alle 23:50, deve partire.  Se torno online alle 0:10, deve
ripartire comunque.


 piu` fino al giorno successivo. Se  ci pensi, non puo` essere che cosi`.
Se ci penso, non puo` essere che come cron prevede che sia, e siccome
non conosco cron, non conosco come prevede che sia, dunque anche se ci
penso non serve a niente. :-PPP
Giornata Internazionale del Sofismo. ;-)



un dubbio....
se io mi collego alle 23.00 per la prima volta oggi, fino alle 23.00 di 
domani non mi viene più eseguito, mentre dovrebbe essere eseguito anche 
se mi collego alle 0.01....
non è possibile fare un confronto proprio sulla data? non considerando i 
secondi passati, ma proprio trovare a che giorno si riferisce l'ultima 
modifica.
Ciao
Mauro. 

 modifica.
Si', infatti. Giocando con il comando 'date' e le sue stringhe di
formattazione si possono implementare tutte le logiche volute, che poi
e' quello che ha fatto Massimiliano. Mi sembra strano che una attivita'
gia' svolta alle 23:59 debba essere ripetuta alle 00:01, cioe' dopo due
minuti, ma ciascuno ha le sue esigenze...
