Newsgroup: it.comp.os.linux.sys
Titolo: cronjob che non parte

Ho il seguete cronjob:
15 0,1,2,3,4,5,6,22,23 * * * /root/phplist/phplist -p processqueue
che dovrebbe far partire la newsletter durante la notte, ad ogni ora. Non fa
nulla. Se lancio il comando da shell, invece, funziona egregiamente! Ho
sbagliato qualcosa nella sintassi? A me pare di no...
-- 
g4b0, linux user n. 369000
http://gabo.homelinux.com

 15 0,1,2,3,4,5,6,22,23 * * * /root/phplist/phplist -p processqueue
La sintassi e` corretta, la regola pero` dove l'hai messa? L'hai 
installata con crontab -e o hai creato un file in qualche directory?
Bye,
  Gabry

Gabriele Greco wrote:

crontab -e
Proprio non capisco, gli altri crontab funzionano correttamente..


 La sintassi e` corretta, 
La cosa e' molto opinabile.
I job di sistema vanno in /etc/crontab e la sintassi e':
minuti ore giorno mese giorno_settimana utente comando
Inoltre su confonde molto facilmente il comando crontab per 
cui e' sempre meglio digitare:
# crontab -u root -e

mallin.shetland ha scritto:

No no, non è opinabile, è corretta.
E poi vanno messi in /etc/crontab sul TUO sistema.. Nel mio ad esempio no
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
As long as the answer is right, who cares if the question is wrong?

 
phplist è eseguibile per l'utente per cui va in esecuzione il job?
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 phplist č eseguibile per l'utente per cui va in esecuzione il job?
io per eseguire i file php faccio cosě:
30 */3 * * *   cd /localhost/site; /usr/bin/php i.php >> /home/sathia/logs
-- 
while(!asleep()) sheep++;

 
Sisi, inotre si tratta di root, quindi escluderei problemi di permessi
(anche perchè lo stesso comando lanciato a mano funziona)


 30 */3 * * *   cd /localhost/site; /usr/bin/php i.php >> /home/sathia/log
*/3 signigica che lanci il comando ogni 3 ore?


 E poi vanno messi in /etc/crontab sul TUO sistema.. Nel mio ad esempio no
In che sistema si usa /etc/crontab? Io conosco slackware e debian, e per
quel che ne so si usa crontab -e


 
prova con (verifica i percorsi effettivi sul tuo sistema):
15 0,1,2,3,4,5,6,22,23 * *
*  /usr/bin/php /root/phplist/admin/index.php -pprocessqueue -c/root/phplist/config/config.php 

 -c/root/phplist/config/config.php
o anche solo con:
15 0,1,2,3,4,5,6,22,23 * * * /usr/bin/php /root/phplist/phplist -p
processqueue

 quel che ne so si usa crontab -e
se si vuole, e se sei un utente, usi crontab -e.
Se sei il dio root, puoi anche usare /etc/crontab
Questo qui e' della mia debian:
poggir@proliant:/ulocal/poggir$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user  command
17 *    * * *   root    run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || run-parts --report 
/etc/cron.daily
47 6    * * 7   root    test -x /usr/sbin/anacron || run-parts --report 
/etc/cron.weekly
52 6    1 * *   root    test -x /usr/sbin/anacron || run-parts --report 
/etc/cron.monthly
#
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 
Per la slackware che usa una versione di cron scritta da Matthew 
Dillon (Dillon's Cron) crontab -e edita direttamente il file nella 
directory di lavoro (quella dove il demone deve trovare i file) e 
dovrebbe automaticamente segnalare delle modifiche.  Attenzione però 
che altre versioni di crontab creano un nuovo file e quello che c'era 
in precedenza viene perso.
Quanto all'esecuzione delle attività non tutte le variabili di 
environment vengono settate quindi bisogna fare molta attenzione. La 
mia man page dice che vengono passate solo USER, HOME, and SHELL.
Mancando PATH occorre fare *molta* attenzione sono scritti i comandi 
negli script.


g4b0 wrote:

Per completezza eccovi lo script:
dns2:~/phplist# more phplist
#!/bin/bash
# script to run PHPlist from commandline. You may need to edit this to make
it work
# with your shell environment. The following should work for Bash on Fedora
Linux
# but this may vary strongly in other situations. You will need to dig into
the
# code to make sure it works for you.
# in commandline mode, access is restricted to users who are listed in the
config file
# check README.commandline for more info
# identify the config file for your installation
CONFIG=/home/pippo/public_html/lists/config/config.php
export CONFIG
# alternatively you can use -c <path to config file> on the commandline
# run the PHPlist index file with all parameters passed to this script
/usr/bin/php /home/pippo/public_html/lists/admin/index.php $*


Scusate se insisto, ma questa proprio non la capisco!! Ho provato a
modificarlo in questo modo:
0 0-6,22-23 * * * /root/phplist/phplist -p processqueue
Ho provato anche da webmin, con il pulsante 'process now', e funziona.
Il comando lanciato a mano funziona. Il cronjob appartiene a root, e root
può eseguire lo script.
Solo quando dovrebbe farlo non funziona, cioè una volta all'ora per tutte le
ore della notte.
Esiste un log di cron che posso consultare per vedere se ci sono dei
problemi?


 problemi?
Ci sono varie versioni di crond.  La versione che ho io la lancio con 
'-l10' ma fa solo il log delle attività schedulate in /var/log/cron.
Quanto cron va in esecuzione non setta tutte le variabili di 
environment. La mia man page dice che vengono passate solo USER, HOME, 
and SHELL.
Mancando PATH occorre fare *molta* attenzione sono scritti i comandi 
negli script.  Se lanci uno script php IMO non trova il programma php.
Prova con:
0 0-6,22-23 * * * /usr/bin/php -f /root/phplist/phplist -- -p processqueue


 
/root/phplist/phplist è uno script bash. Il suo contenuto è il seguente:
dns2:/var/log# more /root/phplist/phplist
#!/bin/bash
# script to run PHPlist from commandline. You may need to edit this to make
it work
# with your shell environment. The following should work for Bash on Fedora
Linux
# but this may vary strongly in other situations. You will need to dig into
the
# code to make sure it works for you.
# in commandline mode, access is restricted to users who are listed in the
config file
# check README.commandline for more info
# identify the config file for your installation
CONFIG=/home/company/public_html/lists/config/config.php
export CONFIG
# alternatively you can use -c <path to config file> on the commandline
# run the PHPlist index file with all parameters passed to this script
/usr/bin/php /home/company/public_html/lists/admin/index.php $*
in teoria dovrebbe essere corretto, ma a quanto pare gli manca qualche
variabile d'ambiente.. come faccio a determinare quali variabili usa un
determinato script?


 /var/log/cron
Sulla mia debian non c'è questo file.. strano..
