コマンドは手動で正常に実行されますが、cronjobでは自動的に失敗します。

コマンドは手動で正常に実行されますが、cronjobでは自動的に失敗します。

私はそれをcronジョブとして実行します。

( export PATH='/usr/bin:/bin' && echo "$PATH" && wget "https://www.mahmansystems.com.au/WSDataFeed.asmx/DownLoad?CustomerCode=%2F&WithHeading=true&WithLongDescription=true&DataType=0" -O mahman_direct.zip ) && echo 'I reached the end' &>> /home/myparadise/public_html/wp-content/uploads/import/files/output.txt

cron ユーザーとして CLI を実行すると正常に動作します。

これまで、cronジョブが自動的に失敗する理由は2つしかありませんでした。これは、CLIとcronでコマンドを実行したときのユーザーとパスの違いによるものでしたが、今回もそうではありません。 cronユーザーとして実行してCLIでcmdをテストしましたが、権限エラーは観察されませんでした。

wgetはファイル検索プロセスを説明するいくつかのテキストを出力/表示しますが、ユーザーのやり取りや入力/応答は必要ありません。

出力.txtにエラーは発生しません。

また何が間違っている可能性がありますか?

curl -sLo万が一に備えて代案も試してみました。違いなし。

答え1

%cron環境のフラグの動作についてはわかりません。

脱出し\%て働いてください。

参考文献1:https://stackoverflow.com/a/1921266

参考文献2:クローントラップ

答え2

予期しないシーンなどの特殊文字が発生するのを防ぐために、私が個人的にアドバイスするのは、スクリプトに非常にマイナー%な操作以外に何も入れないでください。cron(私の考えでは、それへの単一の呼び出しがwget合理的にマイナーなものに分類できると思います。うーん。)それからスクリプトを呼び出しますcron

はい/usr/local/etc/mahmansystems(覚えておいてくださいchmod +x):

#!/bin/sh
wget 'https://...' &&
    echo 'I reached the end'

次に、システムレベルのエントリの例を次に示しますcron

0 * * * * www-data /usr/local/etc/mahmansystems >>& /home/myparadise/public_html/wp-content/uploads/import/files/output.txt

URLを複数回呼び出す場合は、使用するURLを識別する(簡単な)パラメータを指定して同じスクリプトに配置することもmahmansystemsできますcaseesac

関連情報