Pythonスクリプトを終了すると、whileループ呼び出しも停止します。

Pythonスクリプトを終了すると、whileループ呼び出しも停止します。

私は通常、Pythonスクリプトを使用してスクリーンセッションから非対話形式でファイルをアップロードします。大規模なアップロードの場合は、スクリプトが終了してスクリプトが停止することがあります(PythonやOSによってはわかりません)。

...
uploading file000100 ...
uploading file000101 ...
Killed

スクリプトのエラーコードは137です。追加の「診断」情報を取得する方法がわかりません。

アップロードを続行するために、スクリプトをwhileループに入れました。

python3 upload_files.py; \
while [[ $? == 137 ]]; do \
      python3 upload_files.py; \
      sleep 1; \
done

ただし、スクリプトが終了するとwhileループが終了するため、このトリックは機能しません。馬になる?

答え1

成功するまで常に同じスクリプトを再起動するには、次のようにします。

while ((1)) ; do
   python3 script.py && break
done

つまり、Pythonが正常に完了した後にのみ無限ループを破棄します。それ以外の場合は、無限ループが引き継がれ、スクリプトを再起動します。

関連情報