Сначала немного предыстории: у нас есть 9 серверов JVM, которые выводят файлы журналов, которые я постоянно анализирую, чтобы найти, когда возникает ошибка. Логи перекатываются каждые 5-10 минут, но имя файла не меняется. Я использовал SupperPutty, чтобы открыть 9 сеансов и запустить приведенный ниже сценарий для каждого файла журнала, но это было эффективно только тогда, когда я был на работе.
tail -f *filename* | nawk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=2 a=4 s="Bind value for HASCHILDREN = 0"
Поэтому я хотел превратить приведенный выше сценарий в фоновый сценарий, который отправлял бы мне электронное письмо при возникновении ошибки. Сначала мне пришлось использовать KSH во второй оболочке, чтобы избежать остановки сценариев при выходе (даже когда я настроил их как NOHUP). Я попытался настроить скрипт, как показано ниже, но он не отправляет мне электронное письмо при возникновении ошибки.
tail -f *filename* | nawk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=2 a=4 s="Bind value for HASCHILDREN = 0" | mailx -s "Childrens flag has been detected" *email* &
Любая помощь будет принята с благодарностью.