2010-12-14 12 views
19

コンソールに出力されたsterrとstinの最後のn行を効果的に取得するシェルスクリプトを作成します。私はそれがハック無限ループを介してクラッシュした場合、それを再起動しますプロセスを実行しているscreenセッションを持っている:私は必要なものコンソール出力から最後の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 

は、標準エラー出力と標準入力から最後の10かそこらのラインをつかむために、コードの7行のためでありますそして2>&1>>logfleは、ログファイルに追加し、stderrにstdoutをリダイレクトし、ログファイル、あなたに最後の10行を与える

答えて

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

tail -10にそれらを追加します。

+1

ありがとうございます! 1つのリル 'の変更:./run_some_process 2>&1 | tail -10 >> logfle stderrがstdoutに行く必要があるように見えるので、パイプにつなぎます。 – Hersheezy

+0

ああ、申し訳ありません、私の間違い^^ " –