Найти в Дзене
Merion Academy

Перезагрузка Asterisk по расписанию

Оглавление

В версиях Asterisk начиная с версии 1.4 периодически наблюдались проблемы с утечкой памяти, которые лечились с помощью перезагрузки сервера. Так как никто не застрахован от вероятных неизвестных багов, лучше для перестраховки перезагружать сервер IP - АТС раз в неделю (или чаще) с помощью скрипта. В статье расскажем про создание bash скрипта и его настройку в cron.

СКРИПТ ПЕРЕЗАГРУЗКИ

По факту, в скрипте достаточно одной команды перезагрузки. Сделаем немного информативной нагрузки – добавим запись в лог – файл: мы будем записывать дату и время ребута с лог – файл. Итак, создаем файл reboot.sh:

[root@asterisk ~]# touch reboot.sh

Далее открываем этот файл для редактирования через vim редактор:

[root@asterisk ~]# vim reboot.sh

Открыв файл, нажмите «О» для редактирования. Вставьте код, указанный ниже:

#!/bin/sh
LOGFILE=/home/admin/log_mail.txt
DATE="`date +%d.%m.%Y" "%H:%M:%S`"
echo "REBOOT :: $DATE :: Reboot is in progress" >> "$LOGFILE"
shutdown -r now

После этого нажимаем комбинацию «:x!» для сохранения конфигурации. В данном скрипте:

  • LOGFILE - переменная, которая указывает на лог – файл;
  • DATE - записываем дату и время в указанную переменную;
  • echo "…" - записываем в лог – файл отметку о перезагрузке;
  • shutdown -r now - команда перезагрузки сервера;

Получаем простенький скрипт для осуществления перезагрузки. Осталось только сделать его работу по расписанию. Для этого, мы воспользуемся планировщиком cron:

* * * * * команда для выполнения
- - - - -
| | | | |
| | | | +----- день недели (0 - 6) (Воскресенье=0)
| | | +------- месяц (1 - 12)
| | +--------- день месяца (1 - 31)
| +----------- час (0 - 23)
+------------- минута (0 - 59)

Зашедулим скрипт на выполнение каждую полночь в воскресение. Для этого, открываем для редактирования crontab файл:

[root@asterisk ~]# crontab -e

В открывшийся файл добавляем:

0 0 * * 0 /bin/bash /home/reboot.sh >/dev/null

Где /home/reboot.sh - полный путь к скрипту перезагрузки сервера. Нажимаем F2 и далее Yes. Задача на выполнение сохранена.

ПРИМЕРЫ ПЛАНИРОВАНИЯ В CRON

Разберем пару примеров того, по какому расписанию можно планировать выполнение скрипта:

  • 15 0 1 1,3,6,9,12 * - выполнение скрипта каждое 1 число января, марта, июня, сентября и декабря в 00:15 ночи;
  • 0 20 * 8 1-5 - выполнение скрипта каждый будний день в 20:00 в августе;
  • 0 0 1,15,25 * * - выполнение скрипта в полночь каждого месяца первого, пятнадцатого и двадцать пятого числа;