Pagina 1 di 2
[Risolto] Creare cron
Inviato: giovedì 6 gennaio 2011, 23:35
da viro
Salve a tutti, ho bisogno di creare un cron ma non so come fare, in pratica ho bisogno che uno script in php venga eseguito ongi giorno ogni due ore.
Come posso fare, mi potete aiutare?
Grazie
Re: Creare cron
Inviato: giovedì 6 gennaio 2011, 23:47
da Ptah
man crontab <-- per una panoramica di cron
man -e 5 crontab <-- per approfondimenti sulla sintassi delle righe di cron

Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:07
da viro
Grazie ho letto un po, ma senza qualche esempio spiegato sopratutto in italiano non riesco a venirne a capo.
Grazie
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:19
da viro
Salve, ho trovato una guida proprio su ubuntu molto utile, ora ho capito la sintassi, ma non ho capito come fare eseguire lo script ogni due ore, nel senso ho capito che se dopo il comando crontab -e inserisco questo:
5 3 * * * /usr/bin/file.php
ad esempio esegue lo script tutti i giorni alle 03:05, ma come faccio a fargli capire di eseguirlo ogni due ore?
Mica devo creare un cron per ogni due ore, nel senso creo più di un crontab:
5 3 * * * /usr/bin/apt-get update
5 5 * * * /usr/bin/apt-get update
5 7 * * * /usr/bin/apt-get update
Grazie
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:34
da Ptah
azz...è dura imparare a usare linux senza conoscere l'inglese...
Codice: Seleziona tutto
Step values can be used in conjunction with ranges. Following a range with ``/<number>'' specifies skips of the number's value through the range. For example,
``0-23/2'' can be used in the hours field to specify command execution every other hour (the alternative in the V7 standard is ``0,2,4,6,8,10,12,14,16,18,20,22'').
[b]Steps are also permitted after an asterisk, so if you want to say ``every two hours'', just use ``*/2''.[/b]
quindi la riga sarà
(minuti ore giorno_del_mese mese numero_giorno_settimana)
0 */2 * * * /path/to/script.php
ovvero al minuto 0, ogni due ore, tutti i giorni del mese, tutti i mesi, tutti i giorni della settimana (da Lun a Dom)
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:40
da viro
Grazie ora provo e domani dopo il controllo del cron metto risolto.
Oppure c'è un modo per creare un file di log ad esempio per visionare il corretto funzionamento del cron?
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:48
da Stealth
Controlla anche di lasciare vuota l'opzione
mailto......che ogni 2 ore per tutta la vita mi sembra un po' troppo

ciao
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:51
da viro
Scusa quale opzione mailto :-[
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:56
da Ptah
viro ha scritto:
Grazie ora provo e domani dopo il controllo del cron metto risolto.
Oppure c'è un modo per creare un file di log ad esempio per visionare il corretto funzionamento del cron?
In /var/log c'è il file "cron.log" per un'esame spot, altrimenti puoi redirigere l'ouput a un file...
0 */2 * * * /path/to/script.php >> /path/to/choosen/logfile.log 2>&1
(il file /path/to/choosen/logfile.log deve esistere e avere i permessi giusti)
mailto è una variabile che può essere scritta nel file crontab
Codice: Seleziona tutto
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=paul
# m h dom mon dow user command
42 6 * * * root run-parts --report /etc/cron.daily
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 0:57
da Stealth
viro ha scritto:
Scusa quale opzione mailto :-[
Cron avvisa quando compie un'azione, mandando una mail. Ma nel tuo caso sono un po' troppo frequenti e rischiano di spammarti la casella di posta.
Se quel cron fosse il mio io aprirei il file con
e verificherei che (oppure lo scrivi tu, su in cima all'inizio) ci sia la linea con l'opzione mailto vuota, così
poi salvi e chiudi, e dovresti essere salvo :)
ciao
edit: ops, preceduto. segui i consigli di ptah che ne sa sicuramente più di me

Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 1:07
da Ptah
Stealth ha scritto:
edit: ops, preceduto. segui i consigli di ptah che ne sa sicuramente più di me
(b2b)
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 1:13
da viro
Grazie, ad entrambi per la disponibilità, comunque ho avviato il cron per l'esecuzione del file ogni cinque minuti per provare inserendo anche il percorso per il file di log, ora vedo se viene eseguito e vi faccio sapere.
Grazie ancora

Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 1:26
da viro
Ho aspettato per dieci minuti, ma lo script non viene eseguito, e neppure il file di logo mi da alcun errore, ho impostato il file di logo con gli opportuni permessi quali 777, ma rimane comunque vuoto, nessun errore.
Perchè non viene eseguito?
Grazie
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 1:30
da Ptah
sudo ps -ef | grep -i cron
sudo tail -20 /var/log/cron.log
e posta il risultato dei due comandi

Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 1:35
da viro
Questo è il risultato del primo comando:
root 1907 1 0 2010 ? 00:00:01 cron
root 2511 2441 0 00:09 pts/1 00:00:00 crontab -e
root 2512 2511 0 00:09 pts/1 00:00:00 /bin/sh -c /usr/bin/sensible-editor /tmp/crontab.M5uGs1/crontab
root 2513 2512 0 00:09 pts/1 00:00:00 /bin/sh /usr/bin/sensible-editor /tmp/crontab.M5uGs1/crontab
root 8098 2441 0 00:23 pts/1 00:00:00 crontab -e
root 8099 8098 0 00:23 pts/1 00:00:00 /bin/sh -c /usr/bin/sensible-editor /tmp/crontab.Zb0w0R/crontab
root 8100 8099 0 00:23 pts/1 00:00:00 /bin/sh /usr/bin/sensible-editor /tmp/crontab.Zb0w0R/crontab
root 8108 8100 0 00:23 pts/1 00:00:00 editor /tmp/crontab.Zb0w0R/crontab
root 8109 2441 0 00:23 pts/1 00:00:00 crontab -e
root 8110 8109 0 00:23 pts/1 00:00:00 /bin/sh -c /usr/bin/sensible-editor /tmp/crontab.hlitwL/crontab
root 8111 8110 0 00:23 pts/1 00:00:00 /bin/sh /usr/bin/sensible-editor /tmp/crontab.hlitwL/crontab
root 8119 8111 0 00:23 pts/1 00:00:00 editor /tmp/crontab.hlitwL/crontab
root 8173 2441 0 00:34 pts/1 00:00:00 crontab -e
root 8174 8173 0 00:34 pts/1 00:00:00 /bin/sh -c /usr/bin/sensible-editor /tmp/crontab.PhVcl6/crontab
root 8175 8174 0 00:34 pts/1 00:00:00 /bin/sh /usr/bin/sensible-editor /tmp/crontab.PhVcl6/crontab
root 8183 8175 0 00:34 pts/1 00:00:00 editor /tmp/crontab.PhVcl6/crontab
root 8566 2441 0 01:33 pts/1 00:00:00 grep --color=auto -i cron
Mentre questo è il risultato del secondo comando:
tail: cannot open `/var/log/cron.log' for reading: No such file or directory
Re: Creare cron
Inviato: venerdì 7 gennaio 2011, 2:02
da Ptah
Allora...intanto hai un po' di sessioni di editing cron aperte...potrebbe crearti casino!
Non è abilitato il log dei cron, e questo può essere un problema, ma fanulla
Intanto chiudi tutte le sessioni di editing di cron (per evrificare se ne hai ancora rifai il comando sudo ps -ef | grep -i cron. Se non ci sono righe tipo
/bin/sh -c /usr/bin/sensible-editor /tmp/crontab.PhVcl6/crontab
allora dovresti essere a posto
Re: Creare cron
Inviato: domenica 9 gennaio 2011, 22:42
da viro
Salve, ancora qui, ho impostato il cron, e il file per il log, nel file del log mi trovo questo errore e lo script non viene eseguito, ecco l'errore:
/var/www/vhosts/queen/miosito.it/httpdocs/miosito/micro.php: 1: cannot open ?php
: No such file
/var/www/vhosts/queen/miosito.it/httpdocs/miosito/micro.php: 2: Syntax error: word unexpected (expecting ")")
/var/www/vhosts/queen/miosito.it/httpdocs/miosito/micro.php: 1: cannot open ?php
: No such file
/var/www/vhosts/queen/miosito.it/httpdocs/miosito/micro.php: 2: Syntax error: word unexpected (expecting ")")
Nel mio file php le prime due righe sono le seguenti:
<?php
require_once ('configure.php');
Perchè mi da questo errore?
Grazie
Re: Creare cron
Inviato: domenica 9 gennaio 2011, 23:19
da Ptah
Alt...allora...stai chiamando uno script Php, quindi ti conviene richiamarlo direttamente "dal browser", per così dire, ovvero ti conviene qualcosa del genere
Codice: Seleziona tutto
0 */2 * * * /usr/bin/wget --tries=1 --timeout=10 -q -o /dev/null -O /dev/null http://miosito/micro.php
altrimenti devi chiamare lo script con php e aggiustare tutti gli include/require del file in modo che siano assoluti (se lo script NON viene usato anche nel sito vero e proprio)

Re: Creare cron
Inviato: domenica 9 gennaio 2011, 23:21
da viro
Grazie, e per scrivere il risultato nel file di log con questo comando come faccio?
Posso usare alla fine del comando che hai scritto questo come mi hai detto ieri?
>> /path/to/choosen/logfile.log 2>&1
dove poi ci sarà la mia path del sito
Re: Creare cron
Inviato: domenica 9 gennaio 2011, 23:33
da Ptah
No.
In questo caso devi usare le funzioni di wget.
-o file indica il file di log
-O file indica dove verrà scritto il file ricevuto
quindi nel tuo caso dovresti far diventare
-o /path/to/choosen/logfile.log
mentre il -O lascialo a /dev/null perchè non credo ti interessi l'output del file php (cioè quello che visualizzeresti se chiamassi il file col browser). -O è una o maiuscola, -o una o minuscola, nessuno dei due è uno zero
