Bash
終端 Ctrl+s 與 Ctrl+z
例如,我有一個長時間執行且冗長
tar cvf /backup/backup.tar
的命令,該命令將大量文本輸出到螢幕*。我不一定想一直看到所有的輸出。我想停止文本輸出,做其他事情,然後回到它並“恢復”以查看它在備份過程中的進展情況。我希望它表現得像/files/big_file_1 /files/big_file_2 /files/big_file_3 # Ctrl+s # Do other stuff # Ctrl+q , notice big jump in progress /home/user/.bash_history /home/user/small_file_1 /home/user/small_file_2 /home/user/small_file_3 ...
Ctrl+s 停止輸出到螢幕(並且 Ctrl+q 恢復輸出到螢幕),而 Ctrl+z 暫停該過程,我回到 PS1 提示符。我的問題是,Ctrl+s 是否保持命令執行?
在上述
tar
命令中,我會突出顯示最後一個文件 TARred 讓它靜置幾分鐘,Ctrl+q,然後下一個文件似乎在同一個目錄中,或者至少在一個相對接近的目錄中。*我在 Windows 上使用 Putty,所以如果它與 Linux/Unix 上的標準終端之間的行為不同,我深表歉意。
我的問題是,Ctrl+s 是否保持命令執行?
是的,直到系統緩衝區填滿,程序開始阻塞才能寫入終端。所以,它不會無限期地執行。另外,由於輸出被阻止,您將無法在同一終端中執行任何其他內容。
要退出該計劃,同時仍然可以返回,可以選擇:
- 在旁邊執行另一個終端(另一個 Putty,另一個 SSH 連接)
- 在同一終端內執行
screen
或tmux
多路復用多個“視窗”- 將輸出重定向到文件,在後台執行命令,然後在需要時查看文件:
tar cvf ... > /tmp/tar.out &
和tail /tmp/tar.out