El cron no executa el script

De Wikijoan
Dreceres ràpides: navegació, cerca

En realitat, com sempre acostuma a passar, el problema no és del cron sinó de la meva ignorància.

S'ha d'entendre bé la dinàmica del crontab (man crontab)

Com a regla general i per evitar-nos problemes, hem de posar la ruta sencera del script que anem a executar. Si no fiquem la ruta sencera, agafarà el PATH. Però compte... quin PATH?

$ crontab -u usuari -e

Edita el crontab per a un usuari cocret. El Cron no s'executa com a root sinó com l'usuari al qual pertany el crontab. Cada usuari pot tenir el seu crontab a no ser que se li hagi denegat aquest privilegi. Per a l'execució de scripts amb cron moltes vegades l'entorn amb el qual s'executen no és el mateix que amb l'usuari interactiu. Una manera de comprovar on està l'error es redirigir la sortida del script a un log i mirar l'error que dóna. Generalment és un tema de variables que s'han de declarar explícitament en el script.

En el meu cas concret, tinc un script en què faig un

wget http://...
mysqldmp ...

El script s'executa sense problemes (./script.sh), però quan l'integro en el cron no fa cas, tot i que miro de ficar el PATH per indicar-li on està el script.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/joan/scripts
15 20 * * 5 joan script.sh

El problema (falta fer comprovacions) crec que està en què en la tasca cron, quan s'executa el script, no sap trobar wget o mysqldmp, perquè el PATH no està definit com en la meva sessió de consola interactiva. En qualsevol cas, s'arregla posant la ruta completa:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
15 20 * * 5 joan /home/joan/scripts/script.sh

creat per Joan Quintana Compte, març 2009

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines