Как перезапустить Asterisk без сброса активных звонков: core reload
Когда требуется перезагрузка или применение конфигураций:
- Вы изменили диалплан или добавили новый номер, но настройки не вступили в силу.
- Необходимо перезапустить службу Asterisk, не прервав важные телефонные разговоры операторов колл-центра.
- Служба телефонии зависла из-за утечки памяти или падения одного из драйверов.
- После жесткого ребута сервера звонки сбрасываются с ошибками авторизации.
Способ 1. Применение настроек НА ЛЕТУ без сброса разговоров (Reload)
В 95% случаев перезагружать службу Asterisk целиком не требуется — достаточно перечитать текстовые конфигурационные файлы в оперативную память:
# 1. Применить изменения во ВСЕХ модулях сразу (безопасно для активных звонков):
asterisk -rx "core reload"
# 2. Перечитать только маршрутизацию диалплана (extensions.conf):
asterisk -rx "dialplan reload"
# 3. Перечитать только настройки PJSIP номеров (pjsip.conf):
asterisk -rx "pjsip reload"
# 4. Перечитать только модуль музыки ожидания:
asterisk -rx "moh reload"Способ 2. Мягкий перезапуск службы (Graceful Restart)
Если сервер требует полного перезапуска, используйте «вежливый» режим: Asterisk перестанет принимать новые вызовы, подождет, пока все говорящие в данный момент сотрудники положат трубки, и только после этого перезапустится:
# Мягкий перезапуск после завершения всех активных звонков:
asterisk -rx "core restart gracefully"
# Мягкая полная остановка:
asterisk -rx "core stop gracefully"Способ 3. Экстренный жесткий перезапуск (Когда все зависло)
Если система не отвечает на команды, выполните перезапуск процесса на уровне Linux (текущие звонки будут мгновенно разорваны):
systemctl restart asterisk
# Либо через консоль Asterisk:
asterisk -rx "core restart now" Частые вопросы (FAQ)
Оборвутся ли активные разговоры при выполнении команды 'core reload'?
Нет! Команда core reload перечитывает конфигурационные файлы с диска в память ядра, не разрывая ни одного существующего RTP-аудиопотока и не сбрасывая текущие вызовы.
Как отменить ранее запланированную команду 'core restart gracefully'?
Если вы передумали перезапускать сервер, выполните команду отмены: asterisk -rx 'core abort shutdown'.
Как посмотреть, сколько звонков идет в системе прямо сейчас перед перезагрузкой?
Выполните команду: asterisk -rx 'core show channels'. В нижней строке будет указано точное количество активных каналов и вызовов (active calls).
В чем разница между 'core reload' и 'module reload'?
Команда core reload обновляет ядро и все стандартные подсистемы, а module reload <имя_модуля> (например, module reload res_pjsip.so) точечно перезагружает конкретную динамическую библиотеку.