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 awkhoặ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_commandmỗ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ỏ grepvà thay vào đó sử dụng một casetrong while.
Thủ đô -Fbảo tailphả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ế, tailsẽ chuyển sang tệp mới.
Các --line-bufferedtùy chọn kể grepđể tuôn ra bộ đệm của nó sau mỗi dòng; mặt khác, my_commandcó 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.logtrở nên đầy đủ và di chuyển đếnmy.log.1và quá trình của bạn tạo ra một mớimy.log