Nếu bạn chỉ tìm kiếm một khả năng và muốn chủ yếu ở trong vỏ thay vì sử dụng awk
hoặc perl
, bạn có thể làm một cái gì đó như:
tail -F /path/to/serverLog |
grep --line-buffered 'server is up' |
while read ; do my_command ; done
... Nó sẽ chạy my_command
mỗi khi " máy chủ hoạt động " xuất hiện trong tệp nhật ký. Đối với nhiều khả năng, bạn có thể bỏ grep
và thay vào đó sử dụng một case
trong while
.
Thủ đô -F
bảo tail
phải xem tệp nhật ký được xoay; tức là nếu tệp hiện tại được đổi tên và một tệp khác có cùng tên sẽ thay thế, tail
sẽ chuyển sang tệp mới.
Các --line-buffered
tùy chọn kể grep
để tuôn ra bộ đệm của nó sau mỗi dòng; mặt khác, my_command
có thể không đạt được một cách kịp thời (giả sử các bản ghi có các dòng có kích thước hợp lý).
tail -F
để xử lý xoay vòng nhật ký - tức làmy.log
trở nên đầy đủ và di chuyển đếnmy.log.1
và quá trình của bạn tạo ra một mớimy.log