Доброе время суток.
Проблема такая: есть база большая порядка 800 таблиц почти каждая таблица до 150м, база начала переодически падать, написал скриптецpasswd_root_mysql='123'
mysql_cmd='/usr/bin/mysqlcheck'
mysql_='/usr/bin/mysql'
name_base='base'
$mysql_cmd -u root --password=${passwd_root_mysql} -a --auto-repair ${name_base}интервал запуска 5 минут, но есть одно большое но, даный скрипт шарит всю базу, мне етого не нужно так как у меня каждый день создается своя таблица например "o2010х22x7" "r2010х22x7" "q2010х22x7" и таких таблиц много
мне нужно чтобы мой скрипт проверял только текущие таблицы + основные
написал вот такecho show tables | ${mysql_} -u root --password=${passwd_root_mysql} ${name_base} | \
grep -v '^[оrq]2' | \
xargs $mysql_cmd -u root --password=${passwd_root_mysql} -a --auto-repair ${name_base} $1но теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"
подскажите что нужно дописать
> grep -v '^[оrq]2' | \
>теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно
>чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"А разве нужно писать не так?
grep '^[оrq][[:digit:]]\{4\}х[[:digit:]]\{2\}х[[:digit:]]'
>> grep -v '^[оrq]2' | \
>>теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно
>>чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"
>
>А разве нужно писать не так?
>
>grep '^[оrq][[:digit:]]\{4\}х[[:digit:]]\{2\}х[[:digit:]]'можно и так (perl-like regexp, нужно проверить, доступна ли такая опция):
grep -eP '^[orq]2\w+'
>> grep -v '^[оrq]2' | \
>>теперь отсекаются таблицы с початком "о2" "r2" "q2", но мне нужно
>>чтобы еще проверялись и "o2010х22x7" "r2010х22x7" "q2010х22x7"
>
>А разве нужно писать не так?
>
>grep '^[оrq][[:digit:]]\{4\}х[[:digit:]]\{2\}х[[:digit:]]'а разве этот шаблон будет работать без опции -e ?
наверное я неправельно написал.
например есть таблицы: "o2010х18x7" "o2010х19x7" "o2010х20x7" "o2010х21x7" "o2010х22x7" "r2010х18x7" "r2010х19x7" "r2010х20x7" "r2010х21x7" "r2010х22x7" "q2010х18x7" "q2010х19x7" "q2010х20x7" "q2010х21x7" "q2010х22x7" + еще с разними названиями, нужно чтобы проверились те что с разными названиями и "o2010х22x7" "r2010х22x7" "q2010х22x7" а остальные ненужны, даная команда grep -v '^[оrq]2' отсекает все таблицы которые начинаются на "о2" "r2" "q2" , а если еще дописать grep 'o2010х22x7' | grep 'r2010х22x7' | grep 'q2010х22x7' вообще перестает работать
В консольке знак | не означает ИЛИ
Вы таки не проверили предложенный вариант.
>наверное я неправельно написал.
>например есть таблицы: "o2010х18x7" "o2010х19x7" "o2010х20x7" "o2010х21x7" "o2010х22x7" "r2010х18x7" "r2010х19x7" "r2010х20x7" "r2010х21x7"
>"r2010х22x7" "q2010х18x7" "q2010х19x7" "q2010х20x7" "q2010х21x7" "q2010х22x7" + еще с разними названиями,
>нужно чтобы проверились те что с разными названиями и "o2010х22x7" "r2010х22x7"
>"q2010х22x7" а остальные ненужны, даная команда grep -v '^[оrq]2'
>отсекает все таблицы которые начинаются на "о2" "r2" "q2" , а
>если еще дописать grep 'o2010х22x7' | grep 'r2010х22x7' | grep 'q2010х22x7'
>вообще перестает работатьвсё правильно, потому что любой шаблон из дописанного совпадает с тем что ты использовал в grep -v
вот тебе простейший рабочий вариант:
grep -e "[orq]2010.*x7"точнее так:
grep -P "[orq]2010x\d{2}x7"
но с pcre меня отчего то grep послал нах, видимо это от жары, ну да ладно, тебе и первого хватит
разобрался кому интересно вот пример#!/bin/sh
passwd_root_mysql='123'
mysql_cmd='/usr/bin/mysql'
mysqlcheck_cmd='/usr/bin/mysqlcheck'
name_base='base'd_y=`date "+%Y"`
d_m="`date +%m | sed 's%^0%%'`"
d_d="`date +%d | sed 's%^0%%'`"
tbl=${d_y}x${d_m}x${d_d}
echo show tables | ${mysql_cmd} -u root --password=${passwd_root_mysql} ${name_base} | \
grep -v '^[orq]2' | grep -v '^Tables' | \
xargs ${mysqlcheck_cmd} -u root --password=${passwd_root_mysql} -a --auto-repair ${name_base} $1 o${tbl} r${tbl} q${tbl}Всем спасибо
вопрос закрыт