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

问题描述 投票:0回答:1

我想制作一个 shell 脚本,它将有效地从 sterr 和 stin 中获取输出到控制台的最后 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 和 stdin 中获取最后 10 行左右,并将它们附加到日志文件中

bash shell logging gnu-screen
1个回答
66
投票
./run_some_process 2>&1 | tail -10 >>logfle

tail -10
将为您提供最后十行,
2>&1
将 stderr 重定向到 stdout,
>>logfle
附加到日志文件。

© www.soinside.com 2019 - 2024. All rights reserved.