2010-12-14 27 views
19

我想製作一個shell腳本,它可以有效地抓取輸出到控制檯的sterr和stin中的最後n行。我跑,如果它通過哈克無限循環崩潰,將重新啓動的過程的屏幕會話:從控制檯輸出抓取最後n行

#!/bin/bash 
#This script will be started in a screen session 
counter=0 
while [ $counter -lt 10 ]; do 
    ./run_some_process; 
    last_output=#GRAB PREVIOUS OUTPUT FROM CONSOLE HERE AND LOG TO FILE 
    echo -e "$last_output" >> mylog.txt; 
    sleep 5; #sleep for a few seconds before restarting 
done 

我需要的是代碼的第7行搶從stderr和標準輸入的最後10行左右並把它們添加到一個日誌文件

回答

42
./run_some_process 2>&1 | tail -10 >>logfle 

tail -10會給你最後十行,2>&1標準輸出重定向到標準錯誤,>>logfle追加到日誌文件。

+1

謝謝!一個小改變:./run_some_process 2>&1 | tail -10 >> logfle看起來像stderr需要去標準輸出,所以它會使它到管道。 – Hersheezy 2010-12-15 01:21:18

+0

噢,對不起,我的錯誤^^「 – 2010-12-15 09:08:09