crontabで実行すると、環境変数は下付き文字に渡されません。

crontabで実行すると、環境変数は下付き文字に渡されません。

wrapper.sh内部的に他のスクリプトを実行するためにcrontabを使用するスクリプト(たとえば)の1つを実行しようとしています。何の問題もなくうまくいきます。

環境ファイル(パスワードデータベースとパスの保存)を作成してデフォルトのスクリプト(wrapper.sh)を実行しようとすると、ラッパー内で呼び出されるスクリプトにcronエントリを使用できません。

注:cronのスクリプトの前にenvファイルの場所を追加してPATHを変更しようとしましたが、まだ機能しません。

9 9 * * * . /$SOMEPATH/some.env; /$SOMEPATH/wrapper.sh

環境スクリプトとwrapper.sh同じパスにあります。 cron が実行されると、環境変数はラッパーに渡されますが、ラッパー内で呼び出されるスクリプトには渡されません。また、/var/mail/$userenvファイルに「該当するファイルやディレクトリがありません」というEメールが届きます。複数の投稿を見ましたが、解決策が見つかりませんでした。

ベストアンサー1

$SOMEPATHで定義されていないため、cronソースcrontab行を取得しようとすると/$SOMEPATH/some.env失敗します。 (//some.env存在しない限り)

デバッグcronに関する質問については、次のように記録します。標準エラーメッセージ(独自のメッセージを含む)は、ローカルユーザーのメールボックスに送信されます。メールクライアントがインストールされていない場合(mailまたはmailx)、同様の方法で次のメッセージを読むことができます。

less /var/mail/$USER

または本当に普遍的であることを望むなら

"${PAGER:-less}" "${MAIL:-/var/mail/${USER:-${LOGIN:-$(whoami)}}}"

おすすめ記事