Newsgroup: it.comp.os.linux.sys
Titolo: stranissima questione su uno script..

e' una questione alla quale non riesco a trovare una risposta plausibile.
ho uno script di shell, che ha un suo ciclo if.
All'interno del ciclo lancio uno scaricamento bittorrent, che come e' 
facilmente immaginabile impiega ore ed ore (magari un giorno) prima di 
terminare.
Bene.
Se lancio lo script e lo interrompo dopo pochi minuti (facendo un quit  
dall'interfaccia curses di bittorrent), tutto funziona alla perfezione.
Se invece lascio lo script a girare fino alla fine dello scaricamento, o 
se lo faccio continuare per ore ed ore, quando lo termino, ottengo un 
errore sul ciclo if, come se fosse inesatto qualcosa.
E' strano, si comporta come se dopo un certo periodo di tempo, perdesse 
la cognizione di come era strutturato il ciclo if e lo script stesso.
Strano, no?
Se esco dopo 5 minuti niente errore.
Se esco dopo un paio di ore mi da errore.
Che puo' essere? C'e' qualche variabile che imposta dei tempi massimi per 
tenere in mente l'esecuzione dello script stesso?
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
  printf $i }'; echo

 tenere in mente l'esecuzione dello script stesso?
non è che se esci tu' restituisce 0 mentre se esce da solo ritorna qualcosa
di diverso ?
io ci metterei un bel echo $? per controllare :-)
-- 
Il nipotino alla nonna: "Nonna, cos'e' la morte?  Nonna!?  NONNA!!!".
                -- Attilio Floresta

 io ci metterei un bel echo $? per controllare :-)
beh questo posso anche farlo.


 esecuzione ... 
"questione" risolta
ciao :)
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

 "questione" risolta
ma perche'??
tu dici che se passa troppo tempo, lui "perde la memoria" e si deve 
rileggere il file? Ma normalmente lo script viene caricato tutto in 
memoria.... sbaglio?
Guarda .... non appena ho un un altro torrent da scaricare ci riprovo e 
mi riprometto di non modificare lo script :)


 memoria.... sbaglio?
non viene caricato in memoria: viene aperto il file script, letto ed 
eseguito sequenzialmente linea per linea, e chiuso a fine esecuzione.
Per esempio. Se venisse caricato in memoria, questo script non si 
comporterebbe cosi' (lancialo dalla stessa dir dello script):
==== pippo.sh =========
#!/bin/bash
# vd. sotto [1]
# echo "echo ancora..." >>"$0"
echo "echo ancora..." >>pippo.sh
echo fine
=======================
Note
1) ...qui e' meglio non "parametrizzare" :-) Sia mai che a qualcuno 
venga voglia di provare ad eseguire lo script, lanciandolo da root, con 
un comando del tipo: ". ./pippo.sh" o "sh pippo.sh"
Ciao


 un comando del tipo: ". ./pippo.sh" o "sh pippo.sh"
...mi correggo (sorry, non avevo provato). Qui in genere dovrebbe essere 
sicuro: nel primo caso in $0 c'e' si' la stringa "bash", ma fortunatamente 
senza path. Nel secondo e' ok.


 un comando del tipo: ". ./pippo.sh" o "sh pippo.sh"
:))


 sbaglio qualcosa?
uh? a me stampa, gia' dalla prima esecuzione...:
   fine
   ancora...
...poi la seconda volta:
   fine
   ancora...
   ancora...
...e cosi' via.
Cmq puoi sempre fare un altro esperimento piu' "manuale": fai iniziare 
l'esecuzione di uno script che ha all'interno una "sleep" di qualche 
secondo. Da un altro terminale, mentre e' in esecuzione, modifichi la 
parte finale dello script (ovviamente dopo la 'sleep') e lo salvi. 
Quindi vedi se ti esegue i comandi che hai aggiunto allo script appena 
finito il tempo di attesa della sleep...


 uh? a me stampa, gia' dalla prima esecuzione...:
ca$$o. Scusa ma dalle mie parti ci sono piu' di 40 gradi e non ragiono 
piu' bene... :)
