Ограничение сетевого трафика для приложений

четверг, 9 апреля 2009 г.
$ sudo apt-get install trickle

Эта замечательная легковесная утилита позволяет ограничить пропускную способность для отдельного приложения, работающего с сокетами. Она не дает точных результатов, и скорость передачи данных может немного отклоняться от требуемой. Но ведь эта утилита и не предназначена для того, чтобы деньги считать. Так что, по моему мнению, программа справляется с поставленной задачей просто отлично.

Загрузим страничку mail.ru. Но поскольку она очень большая и тяжелая, ограничим скорость закачки до 2 КБ/сек, чтобы не перегружать наш драгоценный канал.

$ trickle -d 2 wget mail.ru
trickle: Could not reach trickled, working independently: No such file or directory
--14:40:28-- http://mail.ru/
=> `index.html.5'
Распознаётся mail.ru... 194.67.57.226, 194.67.57.26, 194.67.57.126
Устанавливается соединение с mail.ru|194.67.57.226|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: нет информации [text/html]
[ <=> ] 24 576 2.00K/s

И, как говорится, вперед!!!

Трикл имеет два наиболее интересных параметра:
-d - скорость закачки в килобайтах в секунду
и
-u - скорость откачки в тех же единицах измерения.
Список остальных параметров доступен в мане.

Обратите внимания на первую строку вывода команды: "trickle: Could not reach trickled, working independently: No such file or directory". Похоже на сообщение об ошибке, но это просто сообщение о том, каким образом будет работать трикл :-) Дело в том, что он может работать в двух режимах: независимо и через демон. Демон удобен в том случае, если вам нужно ограничить суммарный трафик для нескольких приложениях. Запускаем демона с указанием параметров ограничения

$ trickled -d 5

И теперь каждый экземпляр trickle будет подключаться к демону, при этом указывать пропускную способность больше не нужно. Как остановить демон в мануале не написано. Поэтому я это делаю посредством killall trickled.

По умолчанию утилита trickle общается с демоном trickled через сокет "/tmp/.trickled.sock". Если вам нужно запустить второго демона и направить на него другие экземпляры trickle, используйте параметр -n с указанием другого имени файла сокета.

$ trickled -d 1 -n /tmp/.trickled_1.sock
$ trickle -n /tmp/.trickled_1.sock wget rambler.ru

Хочу еще напоследок обратить ваше внимание на работу с прокси-серверами. Если вы собираетесь закачивать большой файл через прокси, то trickle будет ограничивать скорость только между вами и прокси-сервером. Сам же прокси может закачать весь файл с максимально возможной скоростью и терпеливо ждать, когда вы его заберете себе. Таким образом, при закачке одного большого файла прокси может усугубить всю малину и лишить использование шейпера всякого смысла. Однако, при закачке множества мелких файлов вы по крайней мере ограничите частоту их запросов.

Отправка e-mail писем с вложениями из консоли

Чтобы отослать электронное письмо из командной строки, можно воспользоваться утилитой mail. Также она может встречаться под названием mailx или Mail. Для отправки письма пишем следующую команду:

$ mail -s "Тема письма" pupkin@mail.ru
Привет!
Я пишу тебе из консоли!
Ctrl+D


Комбинация клавиш Ctrl+D (^D) с новой строки позволяет завершить ввод письма. После этого у меня появляется приглашение ввести получателя копии - просто жму "Enter", и письмо отправляется.

Если тело письма находится в файле, то можно просто воспользоваться перенаправлением входного потока:

$ mail -s "Письмо из файла" pupkin@mail.ru

Аналогично поступаем, если требуется отослать вывод какой-либо команды. Например, следующая команда отошлет мне на мыло содержание текущего каталога:

$ ls | mail -s "Вывод команды" pupkin@mail.ru

Кроме того, утилита позволяет не только читать письма, но и получать их, отвечать и делать прочие полезные манипуляции. Но вот чего она, похоже, не позволяет - так это добавить вложение к письму. Однако, это не беда. Есть немало способов отправить файл из консоли по электронной почте. Я рассмотрю три из них, которые не потребовали от меня разбираться в чем-то или что-то скачивать/устанавливать.

1. Если нужно отправить двоичный файл письмом, можно его просто закодировать с помощью uuencode. Команда будет выглядет следующим образом:

$ uuencode image.jpg image.jpg | mail -s "Метод 1" sombeody@somewhere.net

И хотя файл действительно закодируется и отправится, это не является вложением в полном смысле электронной почты. некоторые почтовые клиенты адэкватно отреагируют на файл в письме, другие же покажут его как простой текст, и раскодировать его придется вручную.

2. С помощью консольной утилиты mpack. Эта утилита пакует файл в сообщение и отсылает полученное сообщение туда, куда изволите.

$ mpack -s "Метод 2" image.jpg sombeody@somewhere.net

3. С помощью полноценного консольного почтового клиента mutt. Можно запустить его, сформировать письмо и отправить куда надо. А можно запустить mutt в режиме эмуляции диалога mailx (параметр -x), при этом передав через параметры все необходимое, чтобы не получать лишних вопросов от этой программы. Второй вариант выглядит так:

$ echo "Смотри вложение" | mutt -x -s "Метод 3" -a image.jpg sombeody@somewhere.net

Значки рабочего стола в XFCE

понедельник, 6 апреля 2009 г.
1. Остановить рабочий стол (xfdesktop)
2. Перейти в папку ~/.config/xfce4/desktop/ и там в файле icons.screen0.rc затереть строки по типу
[Файловая система]
row=0
col=1

[Домашняя папка]
row=1
col=1

[Корзина]
row=2
col=1


3. Создать в этой же папке файл xfdesktoprc со следующим содержанием:

[file-icons]
show-filesystem=false
show-home=false
show-trash=false
show-removable=true


Как раз эти строки и отвечают за то, какие значки будут отображаться на рабочем столе, а какие - нет
4. снова запустить xfdesktop

Управление raid

Создание устройства:
# mdadm –create /dev/mdX –level=raid1 –raid-devices=2 /dev/hdAA /dev/hdBB
level - уровень RAID,
raid-devices - количество устройств, затем их перечисление.
Сохранение конфигурации о нём:
# mdadm -E -s -c partitions >> /etc/mdadm.conf

Статус устройства можно посмотреть через
# mdadm -Q --detail /dev/mdX
Удаление/добавление отдельного диска:
Пометить диск как сбойный:
# mdadm /dev/mdX --fail /dev/XXX
Удалить диск из массива:
# mdadm /dev/mdX --remove /dev/XXX
Добавить диск в массив:
# mdadm /dev/mdX --add /dev/XXX

Дамп баз в mysql

понедельник, 30 марта 2009 г.
Дамп базы данных в файл
mysqldump --opt database > backup-file.sql
Восстановление из файла
mysql database

Дамп базы данных на удаленный хост
mysqldump --opt database | mysql --host=remote-host -C database

Дамп нескольких баз в файл
mysqldump --databases database1 [database2 ...] > my_databases.sql

Дамп всех баз в файл
mysqldump --all-databases > all_databases.sql

Перенос базы в кодировке ср1251
- сделать дамп на старом хостинге в кодировке CP1251, для этого необходимо выполнить команду mysqldump с параметром --default-character-set=cp1251
- в самое начала файла дампа вставить строку: SET NAMES cp1251;
- восстановить этот файл дампа в базу

Зеркальный програмный рейд

Просотр таблицы разделов диска /dev/hda
#sdfisk -l /dev/hda

Копирование таблицы разделов диска /dev/hda на диск /dev/hdc
#sfdisk -d /dev/hda | sfdisk /dev/hdc

, либо вручную создаем необходимый раздел

Создание зеркального раздела /dev/md0
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdc1

Создание файловой системы
# mkfs.ext3 /dev/md0

Сохраняем конфигурацию
cd /etc/mdadm
echo ’DEVICE /dev/hd[a-z] /dev/sd*[a-z]’ > mdadm.conf
echo 'MAILADDR root' >> mdadm.conf
mdadm --examine --scan --config=mdadm.conf >> mdadm.conf

Два swap-файла на разных дисках

Для повышения производительности разместим файл подкачки на различных дисках /dev/hda1 & /dev/hdc1

отключаем своп

#swapoff -a

или создаем
mkswap /dev/hda1
mkswap /dev/hdc1

Подключаем с одинаковым приоритетом
swapon -a /dev/hda1 -p 1
swapon -a /dev/hdc1 -p 1


Просмотр состояния
#swapoff -s
или
#cat /proc/swaps

Добавляем в /etc/fstab для автоматического подключения при загрузке

/dev/hda1 none swap sw,pri=1 0 0
/dev/hdc1 none swap sw,pri=1 0 0