LINUX.ORG.RU
ФорумAdmin

mysql и named pipe

 


0

2

Доброго времени суток. Есть необходимость препроцессить лог mysql. Сделал следующее:

1. создал pipe

mkfifo /var/log/mysql/mysql.pipe

2. в /etc/mysql/my.cnf внес:

general_log = 1
log_output = 'FILE'
general_log_file = /var/log/mysql/mysql.pipe

3. наваял скрипт, который работает в фоне (в процессе поиска проблемы пробовал и руками запускать)

#!/bin/bash
while true;
        do tail -f /var/log/mysql/mysql.pipe | sed -e  "s/%регулярка%/'xxxx'/g"  >> /var/log/mysql/my.log
done;

в результате в my.log пусто;

tail -f /var/log/mysql/mysql.pipe >> /var/log/mysql/my.log - ноль реакции

tail -f /var/log/mysql/mysql.pipe - тоже пусто;

Получается, что логи не доходят даже до mysql.pipe. что я делаю не так?


Я не знаю, умеет ли mysql писать в fifo, или в нём есть проверка на тип файла, или он пытается его сам создать.

Но, ″tail -f″ на fifo это бред. fifo бесконечен, tail никогда не дочитает его до конца. Допустим, это у вас что-нибудь выводит?

 ( while : ; do echo A ; sleep 1 ; done; ) | tail -f
Аналогично, если запустить это через named pipe тоже ничего не будет выведено, разве что когда память кончится.

mky ★★★★★ ()

Всё верно, тебе не tail -f нужен, а cat.

tiandrey ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.