В версиях 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 * *
- выполнение скрипта в полночь каждого месяца первого, пятнадцатого и двадцать пятого числа;