これを行うには、cronジョブを実行していますが、まだ最後のコマンドに到達していないことがわかりました。ただし、一部のコマンドは時間がかかります。たとえば、それぞれ20〜30分かかります。
cd /some_file_path/ &&
wget [some url] -O dd.csv &&
csvjoin --outer -c VendorStockCode,sku dd.csv dicker.csv > dd_joined.csv &&
csvcut -c Vendor,VendorStockCode,StockDescription,PrimaryCategory,SecondaryCategory,TertiaryCategory,DealerEx,StockAvailable,overview,specs,multi_images dd_joined.csv > dd_joined_cut22.csv &&
wget -q -O - [some url]
しかし、cronジョブが実行された翌日にも最終コマンドは到着しませんでした。
- すべてのコマンドが限られた時間だけ個別に動作し、合計実行時間が1日未満であると仮定すると、1日が経過してもコマンド全体が完了しないのはなぜですか?
- 接続アンパサンドの使用に関連するタイムアウトの問題ですか?
- 上記のコマンドスキームで明らかな論理的な欠陥を発見した人はいますか?
ベストアンサー1
コマンドの相互依存性により、wgetによって引き起こされるすべてのネットワークエラーはゼロ以外のシャットダウンにつながり、不完全なイベントチェーンが発生する可能性が高くなります。
これはcronなので、できることは限られているので、このロジックを単純なbashスクリプトに移動することをお勧めします。
大量のデータを取得したい場合は使用できますアリア2ダウンロード速度は速いですが、ソースが動的かどうかによって異なります。
簡単な解決策は、強制的に再試行して終了信号を捕捉することです。
cd path/to
while [ 1 ]; do
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 -c [download link]
if [ $? = 0 ]; then break; fi
done
csvjoin ...
...