захватить последние n строк из вывода консоли - PullRequest
21 голосов
/ 15 декабря 2010

Я хочу создать сценарий оболочки, который будет эффективно извлекать последние n строк из sterr и stin, которые были выведены на консоль.У меня есть сеанс экрана, на котором выполняется процесс, который перезапустит его, если он выйдет из строя через хакерский бесконечный цикл:

#!/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и stdin и добавить их в файл журнала

1 Ответ

45 голосов
/ 15 декабря 2010
 ./run_some_process 2>&1 | tail -10 >>logfle

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

...