簡體   English   中英

如何使用 nohup 在后台運行 python for 循環以執行終端命令?

[英]How do I run python for-loop that executes terminal commands in the background with nohup?

我目前正在使用 os.system 在 python 腳本中運行 bash 命令,如下所示:

for bucket in bucket_lst:
    start = time.time()
    command = "gsutil rsync -r /home/imagenet/tf_records " + bucket
    os.system(command)
    end = time.time() - start
    time_lst.append(end)

我在這里所做的是將數據從 Google Compute Engine 傳輸到不同區域的 Google Cloud Storage,這些區域存儲在“bucket_lst”中,並測量完成傳輸到每個區域所花費的時間。

每次轉移到一個區域大約需要一個小時到兩個小時,大約有 30 個區域,所以我需要在后台使用 nohup 運行這個過程,因為與 GCE 的 ssh 連接經常斷開。

目前,我嘗試了命令“nohup python3 gce_to_gcs_throuhgput.py”,但它似乎在運行 for 循環執行的命令的第一次迭代后結束了進程。 為什么會發生這種情況,我該如何解決問題以便 nohup 命令運行直到將數據傳輸到每個區域?

將 os.system() 替換os.system() subprocess.run() @gonzalo-odiard 提供的方式工作。 您可以按照Python 文檔的子流程部分替換它。

要了解兩者的區別,請查看此 SO 帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM