Якщо ви шукаєте тільки для однієї з можливостей і хочуть залишитися в основному в оболонці , а не використовувати awk
або perl
, ви могли б зробити що - щось на кшталт:
tail -F /path/to/serverLog |
grep --line-buffered 'server is up' |
while read ; do my_command ; done
... який буде працювати my_command
щоразу, коли у файлі журналу з'явиться " сервер вгору ". Для декількох можливостей ви, можливо, можете скинути grep
і замість цього використовувати case
інтервал у while
.
Столиця -F
повідомляє tail
стежити за тим, щоб файл журналу повертати; тобто, якщо поточний файл буде перейменований, а інший файл з такою ж назвою займе своє місце, tail
перейде на новий файл.
--line-buffered
Опція вказує grep
промивати його буфер після кожного рядка; в іншому випадку, my_command
можливо, їх не вдасться досягти вчасно (якщо припустимо, що в журналах розміщено рядки досить розумного розміру).
tail -F
для обертання обертання журналу - тобтоmy.log
стає повним і рухається до,my.log.1
і ваш процес створює новеmy.log