Re: /etc/init.d/mysql: ERROR: The partition with /var/lib/mysql is too full!
В сообщении от 24 января 2008 13:17 Покотиленко Костик написал(a):
> В Чтв, 24/01/2008 в 01:04 +0300, Artem Chuprina пишет:
> > Покотиленко Костик -> debian-russian@lists.debian.org @ Wed, 23 Jan 2008 21:40:56 +0200:
> >
> > >> ПК> # check for diskspace shortage
> > >> ПК> datadir=`mysqld_get_param datadir`
> > >> ПК> if LC_ALL=C BLOCKSIZE= df --portability $datadir/. | tail -n 1 | awk
> > >> ПК> '{ exit ($4>4096) }'; then
> > >> ПК> log_failure_msg "$0: ERROR: The partition with $datadir is too
> > >> ПК> full!"
> > >> ПК> echo "ERROR: The partition with $datadir is too
> > >> ПК> full!" | $ERR_LOGGER
> > >> ПК> # exit 1
> > >> ПК> fi
> > >>
> > >> ПК> =======================
> > >> ПК> # /usr/sbin/mysqld --verbose --help | grep datadir
> > >> ПК> -h, --datadir=name Path to the database root.
> > >> ПК> datadir /var/lib/mysql/
> > >> ПК> # LC_ALL=C BLOCKSIZE= df --portability /var
> > >> ПК> Filesystem 1024-blocks Used Available Capacity Mounted on
> > >> ПК> /dev/hda7 9614116 2929680 6196064 33% /var
> > >> ПК> =======================
> > >>
> > >> ПК> Есть идеи?
> > >>
> > >> ПК> Что значит это условие в /etc/init.d/mysql:
> > >>
> > >> ПК> if LC_ALL=C BLOCKSIZE= df --portability $datadir/. | tail -n 1 | awk
> > >> ПК> '{ exit ($4>4096) }'; then
> > >>
> > >> ПК> ??
> > >>
> > >> Что тот, кто его написал - кретин.
> > >>
> > >> Замени в нем > на <. А что значит - ну, man awk, да...
> >
> > ПК> Да... но есть 2 НО:
> >
> > ПК> 1. в консоли данное условие возвращает FALSE (то есть не срабатывает),
> > ПК> странно?
> >
> > А, ну да, оно ж используется как обратное...
> >
> > ПК> 2. на другой машине всё точно так же и работает. И на этой работало
> > ПК> до перезагрузки :/
> >
> > ПК> Пролейте света.
> >
> > Разбираться надоть... Попробуй повыводить в лог промежуточные
> > результаты (вывод df, результат применения к нему tail, результат той же
> > команды с заменой exit ($4>4096) на print $4). Не вручную, а из этого
> > скрипта. При загрузке.
>
> Мистика, ночью сервак перезагружался, и теперь проблема пропала. А я
> хотел было потестить, но не вышло...
Никакой мистики, размер $4 изменился.
След. раз если возникнет, запомните число $4 и проверьте
echo 'размер' | awk '{ printf $0" > 4096 == "; exit ($0>4096) }' && echo 'Yes' || echo 'No'
--
С Уважением,
Андрей Никитин
Reply to: