2010-12-14 32 views
19

Tôi muốn tạo một kịch bản lệnh shell để có hiệu quả lấy n dòng cuối cùng từ sterr và stin đã được xuất ra bàn điều khiển. Tôi có một phiên màn hình chạy một quá trình sẽ khởi động lại nó nếu nó bị treo qua một vòng lặp vô hạn hacky:lấy n dòng cuối cùng từ đầu ra giao diện điều khiể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 

Những gì tôi cần là cho dòng 7 mã để lấy 10 hoặc lâu hơn dòng cuối từ stderr và stdin và gắn nó vào một file log

Trả lời

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

tail -10 sẽ cung cấp cho bạn mười dòng cuối cùng, 2>&1 chuyển hướng stdout để stderr, >>logfle gắn thêm vào logfile.

+1

cảm ơn! thay đổi một lil ': ./run_some_process 2> & 1 | tail -10 >> logfle Hình như stderr cần thiết để đi đến stdout vì vậy nó sẽ làm cho nó vào đường ống. – Hersheezy

+0

Ồ vâng xin lỗi, sai lầm của tôi ^^ " –

Các vấn đề liên quan