Ont 'cron' exécuter un script shell qui définit l'environnement avant d'exécuter la commande.
Toujours.
# @(#)$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
Les scripts dans ~/bin/Cron sont tous les liens d'un seul script, 'runcron", qui ressemble à:
: "$Id: runcron.sh,v 2.1 2001/02/27 00:53:22 jleffler Exp $"
#
# Commands to be performed by Cron (no debugging options)
# Set environment -- not done by cron (usually switches HOME)
. $HOME/.cronfile
base=`basename $0`
cmd=${REAL_HOME:-/real/home}/bin/$base
if [ ! -x $cmd ]
then cmd=${HOME}/bin/$base
fi
exec $cmd ${@:+"$@"}
(Écrit à l'aide d'une ancienne norme de codage - aujourd'hui, je voudrais utiliser un shebang '#!' au début.)
Le~/.cronfile " est une variation sur mon profil pour une utilisation par cron - rigoureusement non-interactive et pas d'écho pour des raisons d'être bruyant. Vous pouvez vous arranger pour exécuter la .profil et donc sur la place. (Le REAL_HOME des choses est un artefact de mon environnement, vous pouvez prétendre qu'il est le même que $à la MAISON.)
Donc, ce code lit l'environnement approprié, puis exécute la non-Cron version de la commande à partir de mon répertoire home. Ainsi, par exemple, mon "jour de la semaine' de la commande ressemble à ceci:
: "@(#)$Id: weekday.sh,v 1.10 2007/09/17 02:42:03 jleffler Exp $"
#
# Commands to be done each weekday
# Update ICSCOPE
n.updics
La "quotidienne", la commande est plus simple:
: "@(#)$Id: daily.sh,v 1.5 1997/06/02 22:04:21 johnl Exp $"
#
# Commands to be done daily
# Nothing -- most things are done on weekdays only
exit 0