2010-12-14 4 views
19

Я хочу создать сценарий оболочки, который эффективно захватит последние n строк из sterr и stin, которые были выведены на консоль. У меня есть сеанс экрана работает процесс, который будет перезапустить его, если он выходит из строя через Hacky бесконечный цикл:захватить последние 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-й строке кода, чтобы захватить последние 10 или около линии от STDERR и стандартного ввода и добавить их в файл журнала

ответ

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

tail -10 даст вам последние десять строк, 2>&1 перенаправляет стандартный вывод в стандартный поток ошибок, >>logfle добавляет к лог-файл.

+1

спасибо! один lil 'изменить: ./run_some_process 2> & 1 | tail -10 >> logfle Похоже, stderr нужно было перейти на stdout, чтобы он попал в трубу. – Hersheezy

+0

О да, извините, моя ошибка ^^ " –

Смежные вопросы