Shell-Script
Shell 腳本:如何複製終端仿真器的過去輸出?
我想製作一個 shell 腳本來複製 GUI 終端仿真器的過去輸出(例如,最後 20 行)。動機如下:
當我執行一個需要很長時間的程序時(例如,下載一個非常大的文件,或者轉換一個非常大的電影文件),我有時會想起另一個工作,我不得不離開房間。在這種情況下,我按 ctrl+z 停止該過程。我輸入
fg; echo $? >> log.txt; date >> log.txt; systemctl poweroff
然後我離開房間。
這種方式有效而且還不錯。但它有一個缺點,我無法讀取程序的輸出。我只能知道狀態($?)。所以我想複製最後 20 或 40 行並將它們保存在日誌文件中。
nohup
首先使用或執行您的screen
命令tmux
。當然,如果您已經開始您的流程,這將無濟於事。如果是這種情況,您可以使用以下命令擷取命令的輸出
strace
:strace -p<PID> -s9999 -e write 2>&1 | grep -o '".\+[^"]"'
(替換
<PID>
為PID
您的流程)如果
strace
無法附加到該程序,您可能需要以root
/ 的身份執行sudo
或將您的 ptrace 設置更改為0
(並註意它的安全隱患!):echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
然後,您可以將該輸出重定向到文件。