Category Archives: Без рубрики

разбираясь с почтой

Как посмотреть в exim очередь писем:

for letter in `exim -bp | awk '{print $3}'`; do exim -Mvb $letter >> ~/emph.list; done;

Как удалить из очереди на отправку письма с определенным текстом:

grep -lr 'this_text' /var/spool/exim4/input/ | sed -e 's/^.*\/\([a-zA-Z0-9-]*\)-[DH]$/\1/g' | xargs exim -Mrm

Статья для самостоятельного курения

при ресайзе gd или imagemagick из gif появляется однопиксельная рамка

Возникла проблема: при ресайзе картинки на одном сервере почему-то появляется однопиксельная рамка, либо вообще рваная линия.
Диагностика показала что проблема в основном с гифками.
Оказалось дело было в прозрачке, вместо того что б открыть и отмасштабировать картинку приходится делать:

$image = new Imagick();
$image->pingImage($img);

$image->readImage( $img );

$im = new IMagick();
$im->newImage($image->getImageWidth(), $image->getImageHeight(), new ImagickPixel("white"));
$im->compositeImage($image, imagick::COMPOSITE_OVER, 0, 0);

$format = strtolower($image->getImageFormat());
$im->setImageFormat($format);

$im->scaleImage($width, $height);
print $im;

Настраиваем xcache под Debian

Ставим:

# apt-get install php5-xcache

Считаем себе будущий пароль:

$ echo 'qwerty' | md5sum

Конфигурим

; Делать админку
xcache.admin.enable_auth = On
; Логин
xcache.admin.user = "admin"
; пароль (в мд5)
xcache.admin.pass = "818a3c5b1a4f8d90e362a21722cce3da"
; выбираем сколько кеша хватит нашему серверу
xcache.size = 64M
; пишем сколько у нас процов
xcache.count = 2

Запускаем, радуемся, конфигурим munin

Начинаем жизнь вместе со screen

Скрин это клево и прогрессивно. Например

vim ~/.screenrc

bind S eval split "focus bottom" next
caption always "%?%F%{-b}%:%{-b}%?%C|%D|%M %d|%H%?%F%{+u}%? %L=%-Lw%45>%{+b}%n%f* %t%{-}%+Lw%-0<"

Управляем окнами:

Ctrl+a c - создать скрин
Ctrl+a 0-9 - Перейти на нужный
Ctrl+a S - Разделить экран по высоте
Ctrl+a : - Консоль, sessionname имя - задать имя скрина
Ctrl+a ? - hint
Ctrl+a d - отсоединиться
Ctrl+a esc - управление историей в стиле vim
$ exec screen - запустить скрин без потери хитори
$ screen -ls - показать список
$ screen -r - подключиться к отключенному
$ screen -x - подключиться к активному

Поднимаем mysql репликацию

Делаем дамп:

root@db1:~$ mysqldump -c --insert-ignore -q --master-data=2 -B database > file.sql

Переносим на нужный сервер

root@db1:~$ scp file.sql db2:~/

Заливаем в базу:

root@db2:~$ mysql < file.sql

Смотрим позицию мастера:

root@db2:~$ less file.sql | grep MASTER_LOG_FILE
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=100111;

Указываем где мастер:

echo "CHANGE MASTER TO MASTER_HOST='db1', MASTER_USER='db2_slave', MASTER_PASSWORD='xxx'', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=100111;" | mysql

Стартуем слейв:

slave start;

Молимся и ждем пока слейв догонит мастера:

root@db2:~$ echo 'show slave status\G' | mysql | grep Seconds_Behind_Master
Seconds_Behind_Master: 1630

Ждем пока добежит

инсайт про access.log

Как вы думаете, в какой момент происходит запись в access.log?
Перед тем как отдан первый байт, после того как отдан первый дайт или после того как отдан последний?
Правильно: после того как отдан последний. Оно и логично, на самом деле. Там же пишется Content Lengh, а откуда его узнать пока контент не прочитан.

Вот только это бывает ой как не логично – пользователь запросил файл 10 минут назад и так его не получил

настройки серверов ssh

Если серверов довольно много быстро задалбывает для каждого набирать ssh username@ssh.server.hoster.com. В таком случае нас спасает стандартный конфиг ~/.ssh/config

Host server.com
        User username
        Port 9922
        Hostname  ssh.server.hoster.com

теперь допишем в ~/.profile

complete -W "$(echo `cat ~/.ssh/config | grep -iE '^(Host|HostName) ' | awk '{print $2}'`)" ssh

Востановить удаленные файлы под виндой

Возникла такая потребность, нашел программку Active Undelete. Мега штука, по-моему она даже дигера может достать.
Спасибо ей!

Оптимизация всех баз и таблиц

Иногда после жестоких игр с беками и ресторами возникает желание сделать OPTIMIZE TABLE для всех таблиц и баз.
Руками это делать лениво и хочется позвать на помощь силу баш скрипта.

Тем не менее, есть родная команда:

mysqlcheck --auto-repair --check --optimize --all-databases

Которая все сделает за нас в лучшем виде

Делая клиент mysql немного удобнее

Когда приходится работать с консольным mysql хочется удобства. Как ни странно, это удобство достигается довольно просто. что б не вводить каждый раз пароль к базе достаточно создать в хоуме текущего пользователя файл ~/.my.cnf с паролем

[client]
user = 'юзер'
password="пароль"

[mysql]
pager = less -iMSx4 -FX

Переменная pager позволит использовать пейджер для навигацию по большим результатам. Со всеми плюшками команды less, такими как поиск и быстрое перемещение по списку.

После заливки базы часто не mysql не знает имен таблиц. Достаточно набрать

mysql> \#

и он о них узнает