web-dev-qa-db-ja.com

bashとcrontabに関する問題

可能性のある複製:
crontabが機能しない理由

一部のスクリプトを古いマシンから明快なec2マシンに移行しています。
~/.bashrcでファイルを調達し、いくつかの環境変数を設定していますが、それらの変数にはどのcronからもアクセスできないようです。
私のcronには. /home/username/.bashrc && /path/to/scriptがありますが、スクリプトは、別のファイルにあり、~/.bashrcをソースとする環境変数を認識していません。

これらのスクリプトはすべて、コマンドラインから実行すると正常に動作します。ただし、crontabから実行しようとすると失敗します。

2
Nigel

Cronの各行は、個別のプロセスによって実行されます。おそらく、サブシェル内で実行する必要がありますか? * * * * * root (. /home/nigel/.bashrc && script)

また、.bashrcは通常、それがログインシェルであることを前提としています(特定の変数が想定され、それらが存在しないとスクリプトがクラッシュする可能性があります)。たとえば、.bashrcは次の行で始まる場合があります。つまり、.bashrcの内容は、cronから実行した場合は有効になりません。

[ -z "$PS1" ] && return

justが変数設定を持つ小さなスクリプトを試してみるとよいでしょう。

2
Noufal Ibrahim