从控制台输出中获取最后n行

Her*_*ezy 21 bash shell logging gnu-screen

我想制作一个shell脚本,它将有效地从输出到控制台的sterr和stin中获取最后n行.我有一个屏幕会话运行一个进程,如果它通过hacky无限循环崩溃将重新启动它:

#!/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
Run Code Online (Sandbox Code Playgroud)

我需要的是第7行代码从stderr和stdin中获取最后10行左右并将它们附加到日志文件中

Alb*_*gni 46

 ./run_some_process 2>&1 | tail -10 >>logfle
Run Code Online (Sandbox Code Playgroud)

tail -10将给你最后十行,2>&1将stderr重定向到stdout,>>logfle追加到logfile.