
設想;
我已經透過 SSH 連接到一台機器,打開了一個新的螢幕會話,並啟動了一個腳本。
幾天后,我透過 SSH 返回該計算機,重新連接螢幕會話並查看已產生的輸出;我無法向後滾動輸出。
據我所知,螢幕儲存了一個「螢幕大小」的標準輸出輸出。如果我的腳本在 48 小時內產生了 100 行輸出,我就看不到全部內容,只能看到最後 40 行左右。有沒有辦法讓screen
我保持運行的腳本存儲所有標準輸出,這樣我就可以通過它重新連接屏幕和 PgUp/PgDn,就像它是在本地計算機上運行的腳本一樣?
也許screen
這不是最好的方法?是否有更好的方法可以在註銷後讓腳本在遠端電腦上運行,並能夠在以後重新附加到該進程並查看所有輸出?
答案1
您可以簡單地將輸出儲存在文件中
my_command > mylogfile
如果您想查看命令運行時發生的情況,可以tail
在第二個螢幕上使用:
tail -f mylogfile
您不僅能夠看到整個輸出,還能夠對其進行處理(比較、搜尋…)
編輯如果您不想使用,screen
可以隨時使用nohup
並關閉會話
nohup my_command > mylogfile &
答案2
您也可以在啟動畫面時使用參數 -L 開啟輸出日誌記錄,方法是:
screen -L -S <screen_name>
這將在您透過上述命令啟動畫面的目錄中建立一個名為 screenlog.0 的日誌檔案。
要查看 screenlog.0,請使用 cat (而不是 vi)參考文獻。
cat screenlog.0
答案3
Screen 確實保留了過去輸出行的日誌;它在螢幕文件中稱為“回滾歷史緩衝區”。
若要向後捲動導航,請按C-a ESC
(copy
)。您可以使用箭頭和PgUp/PgDn鍵進行導航,以及其他鍵搜尋和複製文字。按此鍵ESC
退出回滾/複製模式。
預設情況下,Screen 僅保留 100 行的值。放一個defscrollback
您的指令.screenrc
更改此數字。
如果您想要腳本的完整日誌,請將其保存在文件中。在 Screen 內運行它,以便能夠連接回父 shell,並輕鬆查看腳本是否仍在運行、掛起和重新啟動等。和nohup
。要在日誌檔案增長時對其進行監控,請使用tail -f
.
答案4
如果您想在螢幕上看到輸出並記錄它,那麼只需將其tee
通過管道傳遞給您的日誌名稱作為參數即可。