Комментарии 2
Снятие состояния блокировок в момент ее возникновения в логе:
ps uw -U postgres \
| grep [l]ogger \
| awk '{print "/proc/"$2"/fd"}' \
| xargs ls -l \
| grep `cd; psql -U postgres postgres -t -A -c "SELECT CASE WHEN substr(current_setting('log_directory'), 1, 1) = '/' THEN current_setting('log_directory') ELSE current_setting('data_directory') || '/' || current_setting('log_directory') END"` \
| awk '{print $NF}' \
| xargs -l -I{} tail -f {} \
| stdbuf -o0 grep 'still waiting for' \
| xargs -l -I{} date '+%Y%m%d-%H%M%S.%N' \
| xargs -l -I{} psql -U postgres postgres -f detect-lock.sql -o {}-lock.log
Прочитав заголовок - кинулся читать, "неужели grep, sed и т.п." прикрутили к постгре?! Вот бы мне такое! Ан нет.....
Предлагаю свой вариант заголовка: "Использование утилит sed, grep и т.п. для анализа логов PostgreSQL (и не только их)"
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Текстовая обработка в PostgreSQL: grep, sed, awk