Hay otro problema característico que puede afectar a programas dirigidos por cron
en comparación con la línea de comandos (que no sea la interpretación de '' %
signos descritos por Robert Gamble).
Esa diferencia está en el medio ambiente. Si la ejecución del programa depende de variables de entorno especiales, funcionará cuando lo ejecute desde la línea de comando, con el entorno que normalmente usa, y probablemente funcionará si lo ejecuta con at
porque eso captura el entorno cuando crea el trabajo. Pero cron
no tiene una configuración de entorno especial.
Normalmente, configuro cron
para ejecutar scripts por nombre de ruta absoluta, y ese script hace la configuración de entorno que necesito (agrega mi directorio $HOME/bin
a PATH, por ejemplo). Incluso tengo una infraestructura estandarizada para esto: un script de shell que establece el entorno y ejecuta otros programas.
# @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
# Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min Hour Day Month Weekday Command
#-----------------------------------------------------------------------------
0 * * * * /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1 1 * * * /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23 1 * * 1-5 /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2 3 * * 0 /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21 3 1 * * /usr/bin/ksh /work1/jleffler/bin/Cron/monthly
El guión en /work1/jleffler/bin/Cron
establece el entorno y luego ejecuta el script del mismo nombre en /work1/jleffler/bin
para hacer el trabajo real. Los nombres en el subdirectorio Cron
son en realidad todos los enlaces al mismo script.
Usted lo es. Estaba buscando en la página del hombre equivocada (solo hombre crontab en lugar de hombre 5 crontab). –