wrapper.sh
内部的に他のスクリプトを実行するためにcrontabを使用するスクリプト(たとえば)の1つを実行しようとしています。何の問題もなくうまくいきます。
環境ファイル(パスワードデータベースとパスの保存)を作成してデフォルトのスクリプト(wrapper.sh
)を実行しようとすると、ラッパー内で呼び出されるスクリプトにcronエントリを使用できません。
注:cronのスクリプトの前にenvファイルの場所を追加してPATHを変更しようとしましたが、まだ機能しません。
9 9 * * * . /$SOMEPATH/some.env; /$SOMEPATH/wrapper.sh
環境スクリプトとwrapper.sh
同じパスにあります。 cron が実行されると、環境変数はラッパーに渡されますが、ラッパー内で呼び出されるスクリプトには渡されません。また、/var/mail/$user
envファイルに「該当するファイルやディレクトリがありません」という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)}}}"