私は毎時間crontabを実行しています。それを実行して.bash_profile
いるユーザーは、ユーザーが端末からジョブを実行するときに動作する環境変数を持っていますが、実行時にcrontabによって取得されないことは明らかです。
私はそれらを設定しようとした.profile
と.bashrc
彼らはまだピックアップを取得していないようです。crontabが取得できる環境変数をどこに配置できるか、誰か知っていますか?
コマンドを実行する前に、「cron」で環境を設定するシェルスクリプトを実行してください。
常に。
# @(#)$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
〜/ bin / Cron内のスクリプトはすべて、次のような単一のスクリプト 'runcron'へのリンクです。
: "$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 ${@:+"$@"}
(古いコーディング標準を使用して書かれています-最近では、最初にシバン '#!'を使用します。)
「〜/ .cronfile」は、cronで使用するための私のプロファイルのバリエーションです-厳密に非インタラクティブであり、騒々しいためにエコーしません。代わりに.profileなどを実行するように手配できます。(REAL_HOMEのものは私の環境のアーティファクトです-$ HOMEと同じであると偽ることができます。)
したがって、このコードは適切な環境を読み取り、ホームディレクトリからコマンドのcron以外のバージョンを実行します。したがって、たとえば、「weekday」コマンドは次のようになります。
: "@(#)$Id: weekday.sh,v 1.10 2007/09/17 02:42:03 jleffler Exp $"
#
# Commands to be done each weekday
# Update ICSCOPE
n.updics
'daily'コマンドの方が簡単です。
: "@(#)$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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加