Koozali.org: home of the SME Server

Scrivere uno script con cron.d o crontab in Sme Server per copiare dei files

Offline Merioz

  • ***
  • 44
  • +0/-0
Buona sera a tutti!!!
Domanda: esistono delle guide che mi spiegano come funzionano cron.d e crontab?
Purtroppo ho cercato di mettere a punto lo script per la copia dei files da una directory ad un'altra...ma nelle soluzioni che trovo, ognuno dice la sua...e a me non funziona niente...
Io, nella mia piccola esperienza  con Debian, mi sono sempre trovato con gli semplici script fatti da un normale editor e lanciati con il comando "./script.sh... però con cron.d e contrab non capisco dove vanno piazzati i files e che tipologia di sintassi va usata.
Ci sono differenze tra i due?
Grazie in anticipo per la risposta.

Online Stefano

  • *
  • 10,894
  • +3/-0
Ciao

allora:

- in cron.[hourly|daily|weekly|monthly] inserisci dei file (script) eseguibili che verranno eseguiti secondo gli orari stabiliti in /etc/crontab (prime righe, dopo le variabili di ambiente)

- in cron.d inserisci dei file che hanno la stessa sintassi delle righe che trovi in /etc/crontab tipo:

Code: [Select]
1 * * * * root /path/to/my/script

la sintassi prevede l'utilizzo di / - , [] per la definizione granulare dell'esecuzione

puoi, come detto, ottenere lo stesso risultato inserendo delle righe analoghe in /etc/crontab usando dei fragments posti in /etc/e-smith/templates-custom/etc/crontab

questo ultimo approccio ha il vantaggio che tali impostazioni  vengono messe nel backup e quindi ripristinate (sempre che anche gli script siano backuppati.. io di solito li inserisco in una apposita dir in /home/e-smith/files/)

per la sintassi di crontab
Code: [Select]
man 5 crontab

per il discorso dei fragments/template, cerca nel wiki o dai un'occhiata al manuale dello sviluppatore

se hai dubbi, siamo qui

Offline Merioz

  • ***
  • 44
  • +0/-0
Ti ringrazio Stefano per la velocità della risposta!!!
Una curiosità...per utilizzare  dei fragments/template si devono aggiungere dei moduli in Sme ? Perchè oggi pomeriggio, nel tentativo di utilizzare la tua soluzione postata tempo fa per  Hylafax...nella mia installazione non trovavo il percorso "/etc/e-smith/templates-custom/etc/crontab"...
Interessante cmq questa secondo approcio...però lo devo studiare bene...
Grazie ancora!!!

Offline Fumetto

  • *
  • 899
  • +1/-0
Biiiiiiiiiiip

...lettura manuale non effettuata...

Biiiiiiiiiiiiip

:D
« Last Edit: May 06, 2011, 01:00:24 AM by Fumetto »

Offline Merioz

  • ***
  • 44
  • +0/-0
Buongiorno a tutti!!!
Questa mattina, ho provato a fare lo script di copia utlizzando i template e vi chiederei una cortesia...di correggermi quanto scriverò!!!

Ho generato il file "copia" all'interno del percorso "/etc/e-smith/templates-custom/etc/crontab/copia", precedentemente creato

Ho editato il file copia, inserendo questa sintassi:
"1 * * * * root /home/e-smith/files/users/prova/copia.sh"

Il file "copia.sh" è lo stesso riportato da Stefano, scritto un pò di tempo fa...
"bin/mv /var/spool/hylafax/recvq/*.tif /home/e-smith/files/shares/fax_ricevuti/files/ chown prova:gruppofax /home/e-smith/files/shares/fax_ricevuti/files/*.tif  " (script testato e funzionante)

Ho aggiunto a contrab l'esecuzione del mio nuovo script con questa sintassi:
"/sbin/e-smith/expand-template etc/crontab"

Ho verificato se era stato aggiunto con il comando " more /etc/crontab " e nella lista ho trovato anche quello mio appena caricato

Fin qui tutto ok...però caricando a mano dei file *.tif nella dir "recvq" dopo il fatidico minuto di attesa non è successo nulla....

Ho dimenticato qualche cosa?
Il log di cron non mi riporta nessun tipo di errore...
E' possibile lanciare a mano il cron che ho creato per vedere se mi sposta i file da una dir all'altra?
Grazie a tutti per le risposte che darete!!!

p.s.: Lo so che prima di postare e chiedere aiuto per le banalità sarebbe opportuno leggersi la documentazione...però purtroppo il tempo è sempre tiranno!!! Mi scuso con tutti!!!






Online Stefano

  • *
  • 10,894
  • +3/-0
Ho generato il file "copia" all'interno del percorso "/etc/e-smith/templates-custom/etc/crontab/copia", precedentemente creato

HINT 1: usa sempre nomi che iniziano con xy_nomefile, dove x e y sono numeri.. questo perchè il tuo fragment sia correttamente posizionato (non è questo il caso, visto che "copia" viene dopo i numerici)

Quote
Ho editato il file copia, inserendo questa sintassi:
"1 * * * * root /home/e-smith/files/users/prova/copia.sh"

HINT 2: leggere il man di crontab
Code: [Select]
man 5 crontab

quella riga dice di eseguire il comando al minuto 1 di ogni ora, giorno ecc.., non di eseguirlo OGNI minuto

Quote
Il file "copia.sh" è lo stesso riportato da Stefano, scritto un pò di tempo fa...
"bin/mv /var/spool/hylafax/recvq/*.tif /home/e-smith/files/shares/fax_ricevuti/files/ chown prova:gruppofax /home/e-smith/files/shares/fax_ricevuti/files/*.tif  " (script testato e funzionante)

HINT 3: quando riporti codice, usa l'apposito tag del forum, altrimenti non si capisce nulla..

Quote
Ho aggiunto a contrab l'esecuzione del mio nuovo script con questa sintassi:
"/sbin/e-smith/expand-template etc/crontab"

Ho verificato se era stato aggiunto con il comando " more /etc/crontab " e nella lista ho trovato anche quello mio appena caricato

Fin qui tutto ok...però caricando a mano dei file *.tif nella dir "recvq" dopo il fatidico minuto di attesa non è successo nulla....

Ho dimenticato qualche cosa?

vedi sopra

Quote
Il log di cron non mi riporta nessun tipo di errore...
E' possibile lanciare a mano il cron che ho creato per vedere se mi sposta i file da una dir all'altra?
Grazie a tutti per le risposte che darete!!!

nessun errore, il comando è formalmente corretto..

Quote
p.s.: Lo so che prima di postare e chiedere aiuto per le banalità sarebbe opportuno leggersi la documentazione...però purtroppo il tempo è sempre tiranno!!! Mi scuso con tutti!!!

mi dispiace, ma certe volte è necessario leggerla.. :)
in questa risposta hai tutti gli elementi :wink:
« Last Edit: May 09, 2011, 01:12:03 PM by Stefano »