Logging
nohup 多個順序命令不記錄輸出
我有一個 python 腳本(它需要很長時間才能完成執行),我需要執行幾次以改變參數。它在遠端機器上執行。例如和測試目的,請使用以下腳本
test.py
:import time print("\nStart time: {}".format(time.ctime())) time.sleep(10) print("End time: {}".format(time.ctime()))
為此,我通常使用
nohup
. 使用以下命令執行一次就可以了:nohup test.py &
輸出正確保存在
nohup.out
文件中。為了按順序執行,我做了一些研究並發現$$ this question $$$$ 1 $$我想出了以下命令:
nohup $(python test.py; python test.py) &
哪個工作正常。我執行命令,快速註銷並再次登錄,並看到
htop
第一個執行執行,然後完成,然後第二個開始。但問題是輸出沒有保存到nohup.out
文件中。如果我在終端等待兩次執行完成,則會顯示以下錯誤:nohup:無法執行命令“開始”:沒有這樣的文件或目錄
我在這裡做錯了什麼?
PS.: 我需要記錄輸出,因為我需要查看腳本的目前進度並知道如果它沒有正確完成會發生哪個錯誤。因此,如果有其他命令可以用來代替
nohup
可以記錄 python
$(...)
先解決,然後才解決nohup
。即,當您執行時nohup $(python test.py; python test.py) &
,會發生以下情況:
- shell 執行
$(...)
返回字元串Start time ...
,然後- 執行
nohup Start time ...
顯然失敗,因為沒有這樣的命令Start
。由於
nohup
只能執行一個命令,這是一種常見的解決方法:~ $ nohup sh -c "python test.py; python test.py" &
所以你跑
sh
進去nohup
,然後它執行你想要的命令。