View Full Version : Crontab su Ubuntu 6
Ciao a tutti,
sto cercando di impostare l'esecuzione automatica di uno script php con crontab.
Dentro il mio file crontab il codice è il seguente:
* * * * * php /var/miaDirectory/miofile.php>/tmp/file_da_eseguire.log 2>/tmp/file_da_eseguire.err
Il file viene eseguito normalmente da shell scrivendo:
php /var/miaDirectory/miofile.php
Ma con crontab non parte. I file di log non vengono nemmeno creati.
Mi aspetto che parta ogni minuto, ma nulla.
I permessi sul file miofile.php sono settati a 777.
Qualcuno ha qualche consiglio?
Vorrei evitare di creare un file .sh se possibile :stordita:
Grazie :)
prova con path assoluto
/usr/bin/php
L'avevo già provato e non andava, riprovato anche ora per sicurezza e continua a non funzionare e a non creare i log.
Ci dev'essere magari qualche configurazione particolare su Ubuntu per farlo funzionare?
O forse devo cambiare la cartella del file da eseguire? Sia il file crontab che il mio script si trovano sotto /var/, il primo è nello spool di crontab, il secondo in un percorso diverso, ma magari potrebbe non piacergli messo in quella cartella?
e se metti:
/usr/bin/php /var/miaDirectory/miofile.php
?
puoi vederlo se viene eseguito?
provato ora, viene eseguito correttamente da shell (non intendevi da crontab vero?)
intendevo da crontab
p.s.
crontab da root o da utente?
no da crontab non va scrivendo solo quello
crontab da root comunque
strano, sembra corretto
http://www.htmlcenter.com/blog/running-php-scripts-with-cron/
vedi errori nel log di cron ?
ehm, scusa l'ignoranza, ma conosco davvero poco Linux...dove trovo il log di cron? :stordita:
ma aspetta, nel link che hai scritto dice che se ho apache installato dovrei farlo eseguire tramite browser Lynx e non tramite php...dici che dovrei provare così?
i log li trovi in /var/log
cron.log
o
crond
non esiste nessuno di quei file di log :muro:
ci dev'essere qualche altro problema se non ha neanche il log suppongo...
ho provato ad eseguirlo anche con lynx (ho controllato che fosse installato) sempre da crontab, com'era scritto nell'articolo che mi hai linkato, ma nulla
ma il servizio crond e' attivo ?
questa è un'ottima domanda :fagiano:
online non ho trovato da nessuna parte qualcuno che avesse scritto che andasse avviato, sembrava si avviasse da solo ad ogni avvio della macchina...
quindi...come si fa a controllare se è avviato o no?
ho trovato un articolo che dice che si può avviare da "rc" o "rc.local", il file "rc.local" l'ho trovato, ma non ho capito che ci devo fare...:(
non mi uccidere, ma potresti darmi il comando da shell per avviarlo o cmq controllare se è attivo?
edit: trovato /etc/init.d/cron start
è partito, ma ancora non va e i log non ci sono...almeno sappiamo che è attivo però
per vedere se cron e' in esecuzione:
ps aux | grep cron
per avviarlo:
sudo /etc/init.d/cron restart
p.s.
leggiti:
http://wiki.ubuntu-it.org/AmministrazioneSistema/Cron
ok, fatto, mi dà questo log:
root 21912 0.0 0.0 2032 784 pts/0 T 05:44 0:00 crontab -e
root 21913 0.0 0.1 2372 1288 pts/0 T 05:44 0:00 /usr/bin/editor /tmp/crontab.VhYXct/crontab
root 24563 0.0 0.0 2032 784 pts/0 T 05:13 0:00 crontab -e
root 24565 0.0 0.1 2372 1292 pts/0 T 05:13 0:00 /usr/bin/editor /tmp/crontab.8BSnUb/crontab
root 27945 0.0 0.0 2060 856 ? Ss 05:50 0:00 /usr/sbin/cron
root 28204 0.0 0.0 1552 492 pts/0 R+ 05:51 0:00 grep cron
grazie per il link, ora lo leggo bene :)
hai aperto 2 crontab -e ?
cmq il servizio cron e' in esecuzione.....
io proverei a eseguire un'altro script semplice
p.s.
http://www.casualcode.com/2008/05/18/how-to-enable-cron-log-in-ubuntu/
hai aperto 2 crontab -e ?
cmq il servizio cron e' in esecuzione.....
io proverei a eseguire un'altro script semplice
no, in teoria li ho chiusi tutti...forse sono rimasti appesi, ora ne ho addirittura 3 :confused:
provo con un altro script più semplice allora
grazie della pazienza :)
prova a killarli quelli appesi...
http://www.casualcode.com/2008/05/18/how-to-enable-cron-log-in-ubuntu/
ho seguito le istruzioni del link che hai messo ma non mi killa nulla, uff
il file di log ancora non lo crea oltretutto
ho messo uno scriptino semplice semplice come c'era scritto sul link che mi hai mandato poco più su:
* * * * * echo "ciao">/tmp/log.txt
ma ovviamente non fa nulla
ma non è che magari la versione di ubuntu è troppo vecchia?
ma metti:
echo "ciao">/tmp/log.txt
o
echo "ciao" > /tmp/log.txt
p.s.
per killare: sudo killall crontab
p.s.
il link era per abilitare il log
...
Edit /etc/syslog.conf and uncomment the line starting with cron.*
... ecc
ah ecco mi sembrava di aver letto che servisse per i log :D
non killa nulla comunque, ora ne ho 5 aperti :cry:
modificato il crontab senza gli asterischi...quando dovrebbe venire eseguito?
gli asterischi vanno bene.... io non vedevo gli spazi tra le parole:
* * * * * echo "ciao" > /tmp/log.txt
p.s.
prova a killarli con: sudo kill -9 <numeroidprocesso>
ok, killati tutti
il crontab ancora non va purtroppo però
ho provato anche io:
* * * * * echo "ciao" >> /tmp/log.txt
e funziona
p.s.
hai questi file in /etc ?
cron.allow e cron.deny
no, non ci sono, devo crearli? cosa ci scrivo dentro?
no no
ma il log lo hai attivato?
che dice?
ecco il log:
Jun 30 06:18:07 server /usr/sbin/cron[8108]: (CRON) INFO (pidfile fd = 3)
Jun 30 06:18:07 server /usr/sbin/cron[8109]: (CRON) STARTUP (fork ok)
Jun 30 06:18:07 server /usr/sbin/cron[8109]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 06:20:01 server /USR/SBIN/CRON[9976]: (smmsp) CMD (test -x /usr/share/sendmail/sendmail && /usr/share/sendmail/sendmail cron-msp)
Jun 30 06:21:33 server crontab[12167]: (root) BEGIN EDIT (root)
Jun 30 06:23:21 server /usr/sbin/cron[13796]: (CRON) INFO (pidfile fd = 3)
Jun 30 06:23:21 server /usr/sbin/cron[13797]: (CRON) STARTUP (fork ok)
Jun 30 06:23:21 server /usr/sbin/cron[13797]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 06:32:59 server crontab[22384]: (root) BEGIN EDIT (root)
Jun 30 06:35:58 server /usr/sbin/cron[25772]: (CRON) INFO (pidfile fd = 3)
Jun 30 06:35:58 server /usr/sbin/cron[25773]: (CRON) STARTUP (fork ok)
Jun 30 06:35:58 server /usr/sbin/cron[25773]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 06:39:01 server /USR/SBIN/CRON[28224]: (root) CMD ( [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm)
Jun 30 06:39:01 server /USR/SBIN/CRON[28226]: (root) CMD ( [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
Jun 30 06:40:01 server /USR/SBIN/CRON[29770]: (smmsp) CMD (test -x /usr/share/sendmail/sendmail && /usr/share/sendmail/sendmail cron-msp)
Jun 30 06:42:23 server crontab[32260]: (root) BEGIN EDIT (root)
sinceramente .... non ci ho capito molto..
ma sono operazioni eseguite alle ore 6 di stamattina ..
non vedo il tuo comando echo
p.s.
per fare qualcosa.....
potresti provarlo inserendolo da "crontab -e" dal tuo utente
metti >> al posto di > , cosi vedi se itera
è l'orario del server, ha 6 ore di differenza rispetto al nostro fuso, sono state fatte oggi intorno a mezzogiorno :)
il comando del crontab lo inserisco sempre da crontab -e e il mio utente è sempre root, non ho altri utenti per accedere alla shell
ho messo ">>" invece di ">", vediamo se succede qualcosa
ah il file dove viene salvato il crontab si trova sotto /var/spool/cron/crontabs e si chiama "root"
da shell mi va a guardare automaticamente in quella cartella e in quel file, se può esserti d'aiuto
guardando meglio i log ho visto che utilizza il file /usr/sbin/cron come "motore" (almeno spero di aver interpretato bene il log) e allora ho provato a digitare questo da linea di comando:
/usr/sbin/cron /var/spool/cron/crontabs/root
e mi ha ritornato questo errore:
/usr/sbin/cron: can't lock /var/run/crond.pid, otherpid may be 28404: Resource temporarily unavailable
28404 dal log è il processo di startup:
Jun 30 10:30:46 server /usr/sbin/cron[28404]: (CRON) STARTUP (fork ok)
Jun 30 10:30:46 server /usr/sbin/cron[28404]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
potrebbe essere utile?
se è un tentativo inutile mi scuso, è l'unica cosa che mi è venuta in mente ragionando sul log :fagiano:
- si, cron memorizza la crontab dove hai detto tu...
ma non ci aiuta nel tuo problema, puoi solo verificare che ci sia il tuo comando
- cron non lo puoi lanciare un'altra volta, viene lanciato da:
/etc/init.d/cron restart
- ricapitolando: il comando nella crontab e':
* * * * * echo "ciao" >> /tmp/log.txt
e dentro /tmp/log.txt non vedi nulla ?
- si, cron memorizza la crontab dove hai detto tu...
ma non ci aiuta nel tuo problema, puoi solo verificare che ci sia il tuo comando
- cron non lo puoi lanciare un'altra volta, viene lanciato da:
/etc/init.d/cron restart
- ricapitolando: il comando nella crontab e':
* * * * * echo "ciao" >> /tmp/log.txt
e dentro /tmp/log.txt non vedi nulla ?
esatto!
ho letto ora su un forum straniero che siccome il mio crontab viene eseguito come root devo metterlo nella cartella /etc/cron.d per far sì che venga eseguito, ma ho provato e non funziona lo stesso.
Oltretutto ora dal log vedo dei file che erano già presenti nelle cartelle cron.* in /etc/ e che vengono eseguiti correttamente, mentre il mio viene totalmente ignorato
mmm
p.s.
che hai adesso nel crontab?
intendi il log?
l'ultimo pezzetto è così:
Jun 30 08:26:15 server crontab[7298]: (root) BEGIN EDIT (root)
Jun 30 09:27:57 server crontab[7298]: (root) END EDIT (root)
Jun 30 10:30:16 server crontab[28274]: (root) BEGIN EDIT (root)
Jun 30 10:30:22 server crontab[28274]: (root) END EDIT (root)
Jun 30 10:30:46 server /usr/sbin/cron[28403]: (CRON) INFO (pidfile fd = 3)
Jun 30 10:30:46 server /usr/sbin/cron[28404]: (CRON) STARTUP (fork ok)
Jun 30 10:30:46 server /usr/sbin/cron[28404]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 10:32:44 server /usr/sbin/cron[30229]: (CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be 28404: Resource temporarily unavailable)
Jun 30 10:39:01 server /USR/SBIN/CRON[3585]: (root) CMD ( [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm)
Jun 30 10:39:01 server /USR/SBIN/CRON[3586]: (root) CMD ( [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
Jun 30 10:40:02 server /USR/SBIN/CRON[5173]: (smmsp) CMD (test -x /usr/share/sendmail/sendmail && /usr/share/sendmail/sendmail cron-msp)
Jun 30 10:42:59 server crontab[7742]: (root) BEGIN EDIT (root)
Jun 30 10:44:00 server /usr/sbin/cron[8161]: (CRON) INFO (pidfile fd = 3)
Jun 30 10:44:00 server /usr/sbin/cron[8162]: (CRON) STARTUP (fork ok)
Jun 30 10:44:00 server /usr/sbin/cron[8162]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 10:56:40 server crontab[7742]: (root) END EDIT (root)
Jun 30 10:56:45 server /usr/sbin/cron[20163]: (CRON) INFO (pidfile fd = 3)
Jun 30 10:56:45 server /usr/sbin/cron[20164]: (CRON) STARTUP (fork ok)
Jun 30 10:56:45 server /usr/sbin/cron[20164]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 10:58:50 server /usr/sbin/cron[22044]: (CRON) INFO (pidfile fd = 3)
Jun 30 10:58:50 server /usr/sbin/cron[22045]: (CRON) STARTUP (fork ok)
Jun 30 10:58:50 server /usr/sbin/cron[22045]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 11:00:01 server /USR/SBIN/CRON[23712]: (smmsp) CMD (test -x /usr/share/sendmail/sendmail && /usr/share/sendmail/sendmail cron-msp)
Jun 30 11:02:01 server /usr/sbin/cron[22045]: (*system*root) RELOAD (/etc/cron.d/root)
Jun 30 11:03:13 server crontab[28341]: (root) BEGIN EDIT (root)
Jun 30 11:03:32 server crontab[28341]: (root) END EDIT (root)
Jun 30 11:08:01 server /USR/SBIN/CRON[32403]: (root) CMD ( run-parts --report /etc/cron.hourly)
Jun 30 11:09:01 server /USR/SBIN/CRON[32758]: (root) CMD ( [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm)
Jun 30 11:09:01 server /USR/SBIN/CRON[32760]: (root) CMD ( [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
Jun 30 11:16:01 server /usr/sbin/cron[22045]: (*system*root) RELOAD (/etc/cron.d/root)
Jun 30 11:17:29 server /usr/sbin/cron[26158]: (CRON) INFO (pidfile fd = 3)
Jun 30 11:17:29 server /usr/sbin/cron[26159]: (CRON) STARTUP (fork ok)
Jun 30 11:17:29 server /usr/sbin/cron[26159]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 11:20:01 server /USR/SBIN/CRON[28091]: (smmsp) CMD (test -x /usr/share/sendmail/sendmail && /usr/share/sendmail/sendmail cron-msp)
Jun 30 11:22:01 server /usr/sbin/cron[26159]: (*system*root) RELOAD (/etc/cron.d/root)
Jun 30 11:34:00 server /usr/sbin/cron[8069]: (CRON) INFO (pidfile fd = 3)
Jun 30 11:34:00 server /usr/sbin/cron[8070]: (CRON) STARTUP (fork ok)
Jun 30 11:34:00 server /usr/sbin/cron[8070]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Jun 30 11:35:01 server /usr/sbin/cron[8070]: (*system*testfile) RELOAD (/etc/cron.d/testfile)
come comandi nella crontab ho sempre lo stesso di prima.
stai provando questo?
/etc/cron.d/testfile
p.s.
dal log si vedono altri comandi (dei: find) , li hai nel crontab ?
insieme a:
* * * * * echo "ciao" >> /tmp/log.txt
Si il file è quello.
Quei comandi che vedi sono negli altri file che vengono eseguiti presi dalle varie cartelle cron.*.
Nel mio file c'è solo il comando che ti ho scritto e che non parte mai.
prova a creare un file come quelli funzionanti
simile in tutto e per tutto, a iniziare dai permessi
fatto, funziona :muro:
a questo punto c'è qualcosa che non va nella sintassi forse...
ma per caso è obbligatorio mettere una riga di commento? perchè nel mio file non c'era mentre negli altri si
dunque, ho modificato il file con il mio "ciao" e funziona :D
ora sto provando a far eseguire il mio file php...il comando parte ma non succede quello che dovrebbe succedere (lo script invia una mail), quindi sto cercando di fare un po' di log, per vedere se almeno lo esegue o se non lo trova o non trova php.
i commenti sono solo commenti
se ti puo aiutare,
negli script, le variabili d'ambiente non vengono settate
e usa i path assoluti
Funzionaaaaaaaaaaaaaaa :yeah:
Grazie grazie grazie dell'aiuto :D
Comincio a pensare comunque che volesse una riga di commento all'inizio...anche quando si edita con crontab -e ti propone una riga di commento (di default mette l'elenco dei parametri richiesti da sintassi), possibile?
edit: mi hai risposto
I path sono sempre stati assoluti, sinceramente non capisco cosa gli sia cambiato...meglio così comunque, anche se avrei voluto capire meglio
Grazie ancora comunque :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.