crontab -e
00 00 * * * /home/username/run.sh >> /home/username/log 2>&1
run.sh 内部:
source /home/username/.bashrc
java
crontab ジョブがトリガーされると、ログに次のエラーが表示されます。
/home/username/run.sh: 1: /home/username/run.sh: java: not found
ただし、Javaパスは/home/username/.bashrcに設定されているため、調達チームはJavaパスを設定する必要があると予想されます。
次の方法で問題を解決できることを知っています。
export PATH="/usr/local/jdk1.8.0_231/bin:$PATH"
java
しかし、なぜ.bashrcを十分に調達できないのですか? crontabにはどのような環境変数があり、source .bashrcは正確に何をしますか(crontabがこれを考慮しないように)?
ありがとうございます。
答え1
いくつかの推測がありますが、間違っている可能性があります。
- bashシェルを開くとbashプロセスが起動し、.bashrcを実行するとそのbashプロセスの環境のみが変更されます。
- crontabにはオープンベースのbashプロセスとは別に独自のプロセスがあります。
- .bashrcをインポートするときにbashプロセスのみが変更されるため(crontabを実行しても何も変わりませんが??)、crontabはまだ環境変数を変更しません。
したがって、.bashrcを取得することはcrontabには役立ちません。