サブプロセスを使用して深刻なrcloneコピー操作を呼び出すpythonスクリプトを実行しています。rclone はネイティブ コマンドではないため、.bashrc ファイルによって自動的に実行されるシェル スクリプトから定義しています。subprocess.run("rclone") が適切に rclone メニューをプルするため、動作することを確認できます。
問題は、スクリプトを実行すると、エラーや例外が発生しないことです。代わりに、端末ウィンドウに次のように表示されます。
この問題は、Linux サブプロセスがバックグラウンド化されていることに関連していることを理解しています。ただし、この解決策 は私の問題を解決していないようで、このプロセスが一時停止するのを防ぐ方法については何も見つかりません. RedHat と Amazon EC2 で実行したので、ディストリビューションに依存しないことを確認できます。
最後の重要な情報: サブプロセスを sh ではなく bash として呼び出して、bashrc ファイル経由でエイリアスをロードしています。再現可能な最小限のコードは次のとおりです。
start_date = datetime.strptime(datetime.now(timezone.utc).strftime("%Y%m%d"), "%Y%m%d")
# For good measure, double check the day before for more files if the date just changed
time = datetime.utcnow().strftime("%H")
if int(time) <= 3:
start_date = start_date - timedelta(days = 1)
end_date = start_date + timedelta(days = 2)
else:
# End tomorrow
end_date = start_date + timedelta(days = 1)
# Force python to use the bash shell
def bash_command(cmd):
subprocess.Popen(['/bin/bash', '-i', '-c', cmd])
for dt in daterange(start_date, end_date):
cmd = 'rclone copy "/home/test.png" "AWS test:"'
bash_command(cmd)