Câu trả lời ngắn
GNU Parallel có một tập hợp các tùy chọn đẹp giúp thực hiện những việc đó thật dễ dàng:
parallel --tagstring "{}:" --line-buffer tail -f {} ::: one.log two.log
Đầu ra sẽ là:
one.log: nội dung của one.log tại đây ...
one.log: nội dung của one.log tại đây ...
Two.log: nội dung của hai.log tại đây ...
Two.log: nội dung của hai.log tại đây ...
Giải thích thêm
- Các
--tagstring=str
thẻ tùy chọn mỗi dòng đầu ra với chuỗi str . Từ parallel
trang nam :
- chuỗi chuỗi
Dòng thẻ với một chuỗi. Mỗi dòng đầu ra sẽ được thêm vào
str và TAB (\ t). str có thể chứa các chuỗi thay thế, chẳng hạn như {}.
--tagopes bị bỏ qua khi sử dụng -u, --onall và --nonall.
Tất cả các lần xuất hiện {}
sẽ được thay thế bằng các đối số song song, trong trường hợp này là tên tệp nhật ký; tức là one.log
và two.log
(tất cả các đối số sau :::
).
Tùy chọn --line-buffer
được yêu cầu vì đầu ra của lệnh (ví dụ tail -f one.log
hoặc tail -f two.log
) sẽ được in nếu lệnh đó kết thúc. Vì tail -f
sẽ chờ tăng trưởng tệp, nên bắt buộc phải in đầu ra trên cơ sở dòng --line-buffer
. Một lần nữa từ parallel
trang người đàn ông :
--line-đệm (thử nghiệm alpha)
Đầu ra đệm trên cơ sở dòng. --group sẽ giữ đầu ra
cùng nhau cho cả một công việc --ungroup cho phép đầu ra để trộn với
một nửa dòng đến từ một công việc và một nửa dòng đến từ
công việc khác. --line-buffer phù hợp giữa hai điều này: GNU song song
sẽ in một dòng đầy đủ, nhưng sẽ cho phép trộn các dòng
Công việc khác nhau.
-v
tùy chọn (dài dòng) cho đuôi. Điều này có thể không chính xác phù hợp với yêu cầu của bạn, nhưng là một sự khởi đầu.