Mysql поддерживает много кодировок и это нередко является головной болью для системных администраторов.
Самая частая проблема - кракозябры вместо русских букв. А также бывает, что сайт будет показываться нормально, но при поиске будет выдавать совсем не то, если вообще что-то будет искаться.
Это происходит из за того, что текст на сервере в неверной кодировке, либо текст отдается клиенту в неверной кодировке.
Настройки mysql отвечающие за кодировки:
character_set_client - кодировка, в которой данные будут поступать от клиента
character_set_connection - кодировка по умолчанию для всего, что в рамках соединения не имеет кодировки
character_set_database - кодировка по умолчанию для баз
character_set_filesystem - кодировка для работы с файловой системой
character_set_results - кодировка, в которой будет выбран результат
character_set_server - кодировка, в которой работает сервер
character_set_system - кодировка, в которой задаются идентификаторы MySQL, всегда UTF8
character_sets_dir - папка с кодировками
Конвертация виртуальной машины из img файла в LVM раздел
1. Посмотрим на наш img файл:
# ls -la /home/skuleshov/
total 27568
drwx------ 3 skuleshov skuleshov 4096 Mar 31 08:55 .
drwxr-x--x 105 root root 4096 Mar 25 12:40 ..
-rw------- 1 skuleshov skuleshov 167 Mar 31 09:46 .bash_history
-rw-r--r-- 1 root root 11468800 Mar 25 08:48 ra-wrt-x86-disk1.vmdk
-rw-r--r-- 1 root root 3495 Mar 25 08:48 ra-wrt-x86.ovf
-rw-r--r-- 1 root root 55050240 Mar 31 08:55 rkn1.dp.infra.img
drwx------ 2 skuleshov skuleshov 4096 Oct 7 15:10 .ssh
2. Создаем логический том такого же размера и обязательно указываем символ b тем самым говорим lvm, что размер мы определяем в байтах (по умолчанию мегабайты Mb)
#lvcreate -L 55050240b -n rkn1.dp.infra vg1
3. Конвертируем
#qemu-img convert /home/skuleshov/rkn1.dp.infra.img -O raw /dev/vg1/rkn1.dp.infra
Монтирование LVM томов
Иногда, при работе с виртуальными машинами на LVM томах, требуется смонтировать LVM разделы.
Допустим у нас есть виртуальная машина, диски которой есть LVM тома.
Необходимо добраться до данных в этих разделах с родительской машины.
Воспользуемся утилитой kpartx, которая даёт возможность строить карты устройств dev maps для разделов. Блочное устройство, внутри которого находятся тома LVM может быть любым, в частности, это может быть том LVM, том EVMS, простой дисковый раздел или физическое устройство.
Карты находятся здесь:
[root@node36 ~]# ls -l /dev/mapper total 0 crw-rw---- 1 root root 10, 236 Jan 14 14:08 control lrwxrwxrwx 1 root root 7 Jan 14 14:08 vg1-cacti--corp.infra.local -> ../dm-0 |
Sudo "sorry, you must have a tty to run sudo ; TTY=unknown"
Ошибка: sorry, you must have a tty to run sudo ; TTY=unknown, возникает если для пользователя, из под которого запускается команда с правами sudo, запрещена командная оболочка. Для исправления такого недуга, в sudoers нужно закомментировать строчку с опцией requiretty, т.е.
#Defaults requiretty
Администрируя нагруженные проекты, возникает проблема повторного запуска cron задач, т.е. когда во время выполнения одного скрипта, cron запускает второй такой же скрипт. Такие ситуации порой приводят к некорректным результатам работы скрипта и другим проблемам (зависит от самого скрипта).
Как запретить двойной запуск cron задач?
Самое простое в Linux, что можно придумать это воспользоваться утилиткой flock.
Утилита принимает имя лок-файла и команду для выполнения. Как он работает: flock ставит лок на указанный файл и если лок поставлен успешно, тогда запускает указанную команду.
Итого имеем:
* * * * * /usr/bin/flock -n /tmp/email.lock -c "/usr/bin/perl /home/zvonilka/send_email3.pl" >> /var/log_email 2>&1
* * * * * (sleep 30; /usr/bin/flock -n /tmp/email.lock -c "/usr/bin/perl /home/zvonilka/send_email3.pl" >> /var/log_email 2>&1)
Кстати, тут еще показано как просто можно научить cron запускать задачу каждые 30 секунд.