我想创建一个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
我需要的是第7行代码从stderr和stdin中获取最后10行左右并将它们附加到日志文件
答案 0 :(得分:45)
./run_some_process 2>&1 | tail -10 >>logfle
tail -10
将为您提供最后十行,2>&1
将stderr重定向到stdout,>>logfle
附加到logfile。