Читаем core dump файлы

Недавно у одного из клиентов было нужно понять почему периодический заваливался asterisk. Для диагностики использовался отличный отладчик gdb, а также core-файлы, которые создавались в папке /tmp при крахе приложения. Просто приведу пример использования:

gdb /usr/sbin/asterisk /tmp/core.pbx.local-2014-03-31T04\:02\:41+0400

После анализа gdb выведет функцию или модуль в котором произошла ошибка.

В моем случае это была ошибка при выходе из функции конвертирования mp3.

Вышло новое ядро Linux 3.10

В воскресенье вечером официально вышло новое ядро Linux 3.10. По словам Линуса Торвальдса, ядро получилось самым большим по объему нововведений за последние несколько лет. Первоначально Линус предполагал выпустить еще один релиз-кандидат, но склонился к тому, чтобы выпустить финальный релиз 3.10 — и в своем сообщении он замечает, что новое ядро, как и Linux 3.9, не склонно к проблемам с работоспособностью, и готово к повседневному использованию.

В анонсе RC-версии Торвальдс писал, что обычно он включал список имен людей, которые прислали те или иные части кода, однако на сей раз этот список был столь велик, что его нельзя было привести целиком в одном листе рассылки.

Неполный список внесённых в ядро 3.10 изменений: (далее…)

Самый простой backup-скрипт на bash Linux

В этой заметке я покажу пример самого простого бэкап-скрипта на bash Linux.

#!/bin/bash
# This is my backup file - created by 

# here I am setting a time stamp variable which I like to use for logging
TIMESTAMP=`date +%Y%m%d.%H%M`

# here I am setting up the backup directory as a variable
DEST_DIR="/backup/my-backup"

# here I am setting up the directory in which I want to backup, again another variable
SRC_DIR="/home//Documents"

# let's create a variable for the backup file name file
FNAME="MyBackup"

# let's create a variable for the log file, let's also name the log file with the filename and timestamp it
LOG="/home//log/$FNAME-$TIMESTAMP.log"

# start the backup, create a log file which will record any messages run by this script
echo -e "Starting backup of  $SRC_DIR directory" >> ${LOG}

# compress the directory and files, direct the tar.gz file to your destination directory
tar -vczf ${DEST_DIR}/${FNAME}-${TIMESTAMP}.tar.gz ${SRC_DIR} >> ${LOG}

# end the backup, append to log file created by this script
echo -e "Ending backup of  $SRC_DIR" >> ${LOG}

Сохраняем его в удобном для вас каталоге и задаем выполнение по расписанию. Для этого открываем файл /etc/crontab и в конец добавляем строку:

00 00   * * *   root    sh /home/backup/backup1c.sh

Mount LVM Partition in the RHEL / CentOSМонтирование LVM в RHEL / CentOS

lvm
Mount LVM-partition in Linux differs from typical mounting of standard file system partition (for example, ext2 and ext3). Let’s have a look at our disk:

fdisk -l /dev/hda
Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 19457 156183930 8e Linux LVM

lvm
Монтирование LVM-разделов в Linux несколько отличается от типичного монтирования разделов стандартных файловых систем (например, ext2 или ext3). Взглянем на наш диск:

fdisk -l /dev/hda
Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 19457 156183930 8e Linux LVM

(далее…)

Примеры отправки писем из консоли Linux

Иногда бывает просто необходимо отправить себе письмо. В данной заметке я покажу 2 маленьких примера. Но предварительно нам понадобится утилита uuencode. Если у вас она еще не установлена, то установите ее:

# RHEL, CentOS
yum install sharutils
# Debian, Ubuntu
apt-get install sharutils

В первом мы отправим простое письмо с текстом. А во втором — отправим письмо с вложением из консоли Linux:

#Простое письмо
mail -s "Example" [email protected] < text_file.txt

#Письмо с вложением
uuencode attachment_image.jpg attachment_image.jpg | mail -s "Example" [email protected]

Обновление с CentOS 5.8 (5.0-5.7) до CentOS 5.9

Процесс обновления CentOS достаточно прост. Для начала получим права root:

su -
## или ##
sudo -i

Скопируем в надежное место все кричные данные:

  • Каталог /etc
  • Важные log файлы из каталога /var/log
  • Сайты, если они у вас есть
  • Базы данных и прочие файлы

Далее проверим пакеты которые были обновлены командой:

yum list updates

Если все вас устраивает, запустим процесс обновления:

yum update

После установки необходимо будет перезагрузить сервер:

reboot

И убедимся, что у нас версия ОС CentOS 5.9:

cat /etc/redhat-release
## Output ##
CentOS release 5.9 (Final)

На этом процесс обновления закончен.

PPTP VPN сервер в 3 конфигурационных файлах

Тема конечно избита. Но я все равно расскажу как установить pptp демон =) Команда для установки сервера будет варьироваться в зависимости от того, какой дистрибутив Linux вы используйте. В моем случае это Ubuntu.

sudo apt-get install pptpd

Открываем /etc/pptpd.conf  и прописываем:

option /etc/ppp/pptpd-options
logwtmp
localip 11.10.10.219
remoteip 11.10.10.220-240

Открываем  /etc/ppp/pptpd-options:

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
nodefaultroute
debug
lock
nobsdcomp

Открываем

username pptpd mypassword *

Запускаем pptpd:

sudo service pptpd restart

Настроим правила iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

В случае если ваш VPN сервер не подключен напрямую к интернету, вам скорее всего понадобится открыть порт TCP-1723 и «протокол 47», он же GRE, на локальный IP адрес VPN сервера.

Настройка закончена.

Мониторинг транков Asterisk с уведомлением о проблеме по почте

Хочу привести пример php скрипта, который я иногда использую для мониторинга транков. Я помещаюего в cron с интервалом в 15 минут. После срабатывания он проверит транки. Если есть не работающий — дает паузу в 20 секунд. Снова проверяет состояние транков. Если ничего не изменилось — перегружаем модуль chan_sip в asterisk. И если это не могло — шлем email с отчетом по почте, указанной в переменной $report_email.
Скрипт не мой лично — но нареканий в работе у меня нет. (далее…)