Tôi đang cố gắng xây dựng một kịch bản lệnh shell để giám sát một số tệp nhật ký. Tôi đang sử dụng một lệnh như thế này:tail -f vào grep vào cắt không hoạt động đúng
tail -f /var/somelog | grep --line-buffered " some test and p l a c e h o l d e r" | cut -f 3,4,14 -d " "
các log file là như:
some test and p l a c e h o l d e r 3
some test and p l a c e h o l d e r 4
some test and p l a c e h o l d e r 5
some test and p l a c e h o l d e r 6
và vân vân .. Vấn đề của tôi là đầu ra của lệnh không hiển thị cuối cùng dòng
some test and p l a c e h o l d e r 6
cho đến khi dòng
some test and p l a c e h o l d e r 7
được thêm vào nhật ký.
Tôi hy vọng tôi đã giải thích rõ vấn đề của mình. Bất cứ ai có thể giúp tôi giải quyết vấn đề này? Cảm ơn bạn :)
Có thể các dòng nhật ký không được kết thúc bằng nguồn cấp dữ liệu dòng, nhưng bắt đầu bằng một dòng thay thế? Trong trường hợp này, dòng 6 sẽ không thực sự hoàn thành cho đến khi dòng 7 bắt đầu và cung cấp nguồn cấp dữ liệu dòng đó. Nếu bạn nhìn vào tệp nhật ký, hiển thị tất cả các ký tự, bạn có thấy nguồn cấp dữ liệu dòng ở cuối dòng cuối cùng không? –
Tìm một dòng mới ("\ n") sử dụng 'od -c/var/somelog'. – cdarke
Bạn có thấy cùng một đầu ra chỉ với 'đuôi -f' không? Nếu đó là trường hợp thì @ David đã chỉ ra nó một cách chính xác. – mtk