linux user group brescia

immagine del castello

Archivio della mailing list

cron: aiuto!

andrea gelmini andrea.gelmini a lugbs.linux.it
Mer 28 Apr 2004 13:42:45 UTC
On mer, apr 28, 2004 at 11:50:23 +0200, Manuel wrote:
> 
> Ciao a Tutti,
> non riesco a settare bene cron.
Prendo la tua mail come esempio per dimostrare come un errato approccio
alla ricerca delle soluzioni comporti piu' problemi che vantaggi. Quindi,
nulla di personale, semplici considerazioni.

> Vorrei che cron mi spedisse ogni giorno alla stessa ora un file di log 
> per e-mail, ma non riesco ad ottenere risultati.
> Ecco cosa ho fatto (ma non funziona ancora):
> 1 spostato nella dir /var/spool/cron/crontab ho lanciato da root: 
> <crontab -e root>
spostarti nella directory /var/spool/cron/crontab non e' necessario.
lanciando "crontab -e" editi il file dell'utente con cui sei loggato,
pertanto puoi fare a meno di specificare "root", visto che lo sei gia'.

> 2 si apre il crontab di root con vi che non so usare, esco, e mi ritrovo 
> un file crontab.xxxx (+ altri 2 , l'ho fatto + volte) nella dir 
> /var/spool/cron,
poiche' uno dei vantaggi principali di unix e' proprio il favorire la
personalizzazione dell'ambiente di lavoro, i software scritti in modo
consono e sensato si appoggiano ad un insieme di parametri d'ambiente. nel
tuo caso crontab non invoca vi per scelta propria, ma perche' settato come
editor di default. se setti la variabile d'ambiente VISUAL, oppure EDITOR,
acciocche' invochi pico, per magia anche crontab utilizzera' quello.

> 3 lo edito con pico e inserisco come ultima riga:
> 4 <30 8 * * *  cat /var/log/maillog |  mail  -s "maillog" postmaster a me.com>
l'editing diretto di questi file e' *male*. e' importate usare crontab in
quanto vengono attivati tutta una serie di controlli formali su quanto
scritto, in modo di riuscire ad evitare sul nascere il 99% degli errori
tipici fatti con cron.

> 5 non arriva niente
per chiaroveggenza non saprei darti una mano... sarebbe stato meglio
postare cosa dicono i log a riguardo.

> 6 dove sbaglio?
possiamo scegliere tra una rosa di possibilita'. a mio avviso la piu'
probabile e' la mancanza del path completo (buona norma anche in tutti i
casi in cui si scrivano degli script).
quindi:
30 8 * * *  /bin/cat /var/log/maillog |  /usr/bin/mail  -s "maillog" postmaster a me.com

non solo, questo e' il tipico caso in cui un cat e' assolutamente
ridondante, percio':
30 8 * * * /usr/bin/mail -s "gino" pino a example.com < /var/log/maillog

> Se non chiedo l'oggeto della mail (-s "maillog") _una_ volta cron me lo 
> spedisce (solo una...)perĂ² io voglio l'oggetto e che mi arrivi 
> puntualmente...
palese che il subject del comando mail non possa interferire con cron,
altrimenti saremmo in presenza di un bug immenso nel sistema...

tieni comunque presente che un approccio del genere per avere i log della
mail puo' essere foriero solo un gran mucchio di problemi, te ne cito
alcuni:

a) non viene effettuato nessun controllo sulla dimensione del file prima
   dell'invio (tra l'altro, perche' non effettuare una compressione, tale
   da ricevere un file di dimensione sicuramente esigua?);
b) se devi avere garanzia di ricevimento, lo script, cosi' come e' ora, non
   tiene in considerazioni eventuali interventi di logrotate et similia,
   mail generata troppo grossa, ecc;

esistono comunque un fottio di tool che generano reportistiche e
informazioni varie sui log piu' disparati, tra cui le mail, dandoti
notifica di eventuali tentativi sospetti, ecc. direi che sia piu' opportuno
l'utilizzo di una aggeggio del genere.

> Grazie in anticipo per l'aiuto,
> Manuel
tosto che aiutare e' uno degli scopi del lugbs, cio' che mi da' noia e' che
quanto riportato sopra avresti potuto trovarlo banalmente nella manpage di
cron(tab), oppure in uno dei milioni di tutorial a riguardo presenti in
rete.

n.b.: la risposta e' stata scritta al volo e di fretta. potrebbero esserci
errori di varia natura, ma ora non ho modo/voglia di controllare. invito
gli altri del lug a dare un occhio alla bonta' del tutto.



Maggiori informazioni sulla lista Lug