可能性のある複製:
crontabが機能しない理由
一部のスクリプトを古いマシンから明快なec2マシンに移行しています。~/.bashrc
でファイルを調達し、いくつかの環境変数を設定していますが、それらの変数にはどのcronからもアクセスできないようです。
私のcronには. /home/username/.bashrc && /path/to/script
がありますが、スクリプトは、別のファイルにあり、~/.bashrc
をソースとする環境変数を認識していません。
これらのスクリプトはすべて、コマンドラインから実行すると正常に動作します。ただし、crontabから実行しようとすると失敗します。
Cronの各行は、個別のプロセスによって実行されます。おそらく、サブシェル内で実行する必要がありますか? * * * * * root (. /home/nigel/.bashrc && script)
。
また、.bashrcは通常、それがログインシェルであることを前提としています(特定の変数が想定され、それらが存在しないとスクリプトがクラッシュする可能性があります)。たとえば、.bashrcは次の行で始まる場合があります。つまり、.bashrcの内容は、cronから実行した場合は有効になりません。
[ -z "$PS1" ] && return
justが変数設定を持つ小さなスクリプトを試してみるとよいでしょう。