Остановка агента сервера 1С на Windows и Linux без потери данных

· 9 мин

Содержание

Службу агента сервера 1С на Windows останавливают в оснастке services.msc (служба «Агент сервера 1С:Предприятия 8.3») или командой net stop с именем службы. На Linux — systemctl stop с именем юнита srv1cv8…. Вместе с агентом ragent завершаются менеджер кластера rmngr и все рабочие процессы rphost.

Главная сложность не в самой команде. Остановка обрывает все сеансы пользователей и фоновые задания, а иногда служба повисает в состоянии «Остановка». Поэтому сначала блокируют базы и выпускают людей, потом гасят службу, а при зависании — завершают процессы вручную.

Когда и зачем останавливают агент сервера 1С

Агент сервера — это служба, которая запускает весь кластер. В диспетчере задач видно три вида процессов:

ПроцессЧто делаетПорт по умолчанию
ragentагент сервера, к нему подключается клиент и консоль1540
rmngrменеджер кластера1541
rphostрабочие процессы, выполняют код конфигурациидиапазон 1560–1591

Отдельной службы «rmngr» нет. Менеджер кластера — дочерний процесс агента, поэтому останавливают именно службу агента, а rmngr и rphost завершаются вслед за ней.

Типичные поводы для остановки:

  • 🔄 обновление платформы 1С на сервере;
  • 🧹 очистка сеансовых данных и кэша сервера, когда базы «тормозят» или выдают странные ошибки после сбоя;
  • 💾 резервное копирование каталога srvinfo с реестром кластера;
  • ⚙️ смена портов, учётной записи службы или пути к каталогу кластера;
  • 🧠 рост памяти у rphost, который не уходит после завершения сеансов;
  • 🖥️ плановая перезагрузка или обслуживание сервера.

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

Подготовка: завершаем сеансы до остановки службы

Если просто нажать «Остановить», платформа сама обрубит сеансы. Это работает, но у пользователей в этот момент может проводиться закрытие месяца или идти загрузка обмена. Правильный порядок такой:

  1. Предупредите пользователей о времени остановки.
  2. Установите блокировку начала сеансов в каждой базе кластера.
  3. Отключите выполнение регламентных заданий (обмены, загрузка курсов, полнотекстовый поиск).
  4. Дождитесь, пока пользователи выйдут, оставшиеся сеансы завершите принудительно.
  5. Только после этого останавливайте службу.

Блокировку удобно ставить в консоли «Администрирование серверов 1С Предприятия»: раскройте кластер, затем Информационные базы, откройте свойства нужной базы. Там есть флажки «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена», поле сообщения для пользователей и код разрешения. Код разрешения пригодится, чтобы самому зайти в заблокированную базу.

Активные сеансы видны в ветке базы Сеансы. Их можно выделить и удалить через контекстное меню — это и есть принудительное завершение.

Перед остановкой посмотрите и на фоновые задания. В списке сеансов они отображаются с приложением «Фоновое задание». Если там идёт, например, ночной обмен с сайтом или пересчёт итогов, лучше дождаться его окончания, чем потом выяснять, что выгрузилось наполовину.

💡 Если баз много, кликать по каждой долго. Ту же блокировку ставит утилита rac одной командой на базу — она разобрана ниже.

Остановка службы в оснастке Windows

Самый наглядный способ — стандартная оснастка служб.

  1. Нажмите Win + R, введите services.msc, нажмите Enter.
  2. Найдите службу агента. В зависимости от языка дистрибутива она называется «Агент сервера 1С:Предприятия 8.3 (x86-64)» или «1C:Enterprise 8.3 Server Agent (x86-64)». Для 32-битного сервера приставки (x86-64) нет.
  3. Щёлкните правой кнопкой и выберите «Остановить».
  4. Дождитесь, пока в колонке «Состояние» статус исчезнет (служба перейдёт в остановленное состояние).
  5. Откройте диспетчер задач, вкладку «Подробности», и убедитесь, что процессов ragent.exe, rmngr.exe и rphost.exe не осталось.

На сервере может быть несколько служб агента. Так бывает, когда установлены две версии платформы на разных портах (например, 1540 и 2540). Чтобы понять, какая служба за что отвечает, откройте её свойства: в поле «Исполняемый файл» видны путь к ragent.exe с номером версии и параметры -port, -regport, -range, -d.

Если служба нужна остановленной надолго (например, на время миграции), в свойствах поменяйте «Тип запуска» на «Вручную» или «Отключена». Иначе после перезагрузки сервера агент поднимется сам.

Рядом с агентом часто стоит служба сервера администрирования — «1C:Enterprise 8.3 Remote Server» (процесс ras.exe). Её можно не трогать: при остановке агента она просто потеряет связь с кластером и восстановит её после запуска.

Как остановить агент сервера 1С из командной строки Windows

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

Сначала узнайте точное имя службы:

sc query state= all | findstr /i "1C"

Или в PowerShell:

Get-Service | Where-Object { $_.DisplayName -like "*1C*" } | Format-Table Name, DisplayName, Status

Затем остановите службу. Команда net stop принимает и внутреннее, и отображаемое имя, кавычки обязательны из-за пробелов:

net stop "1C:Enterprise 8.3 Server Agent (x86-64)"

Варианты для PowerShell:

Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
Get-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"

Вторая строка показывает текущий статус. Чтобы перезапустить сервер одним действием, есть Restart-Service с тем же параметром -Name.

Сравнение способов на Windows:

СпособКогда удобенРиски
services.mscразовая остановка вручнуюнет, если сеансы завершены заранее
net stop / sc stopbat-скрипты, планировщик заданийsc stop не ждёт завершения, скрипт может пойти дальше раньше времени
Stop-Serviceскрипты PowerShell с проверкамипри зависании ждёт долго, нужен контроль времени
taskkill /Fслужба завислапрерывание транзакций, сеансовые данные остаются «грязными»

Пример простого bat-файла для ночного обслуживания, который останавливает агент, ждёт и запускает его снова:

@echo off
set SVC=1C:Enterprise 8.3 Server Agent (x86-64)
net stop "%SVC%"
timeout /t 30 /nobreak
net start "%SVC%"

Разница между net stop и sc stop важна в скриптах. net stop дожидается остановки службы, а sc stop только отправляет команду и сразу возвращает управление. Если следом идёт обновление платформы, используйте net stop или Stop-Service.

Остановка сервера 1С в Linux

На Linux имя юнита зависит от версии платформы.

Платформа до 8.3.21. Сервер устанавливался со скриптом srv1cv83:

sudo systemctl stop srv1cv83
# или на старых системах
sudo /etc/init.d/srv1cv83 stop

Платформа 8.3.21 и новее. Каждая версия ставится в свой каталог /opt/1cv8/x86_64/<версия>, а служба оформлена как шаблонный юнит systemd с номером версии в имени. Найдите его:

systemctl list-units --all | grep srv1cv8

Вывод будет похож на srv1cv8-8.3.24.1548@default.service. Остановка:

sudo systemctl stop srv1cv8-8.3.24.1548@default.service
systemctl status srv1cv8-8.3.24.1548@default.service

Номер версии подставьте свой из вывода list-units. Если юнит не находится, значит службу при установке не регистрировали, и сервер запущен вручную. Тогда смотрите процессы.

Проверка, что процессы завершились:

ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep

Процессы работают от пользователя usr1cv8. Если после остановки юнита что-то осталось, сначала пробуйте мягкое завершение сигналом TERM, и только потом KILL:

sudo pkill -TERM -u usr1cv8 rphost
sudo pkill -KILL -u usr1cv8 rphost

Чтобы агент не поднялся после перезагрузки сервера, выполните systemctl disable для того же юнита. Не забудьте вернуть enable после работ.

Утилита rac: управление кластером перед остановкой

Утилита rac — консольный клиент сервера администрирования ras. Сама по себе она службу агента не останавливает. Зато через неё удобно сделать всё, что нужно до остановки: заблокировать базы, завершить сеансы, посмотреть рабочие процессы. Это особенно выручает на Linux, где графической консоли нет.

Утилита лежит в каталоге bin платформы. Сервер администрирования должен быть запущен, по умолчанию он слушает порт 1545. Если он не запущен как служба, его можно стартовать вручную:

ras cluster --daemon

Базовые команды, которые понадобятся:

# список кластеров и их идентификаторы
rac cluster list

# базы кластера
rac infobase summary list --cluster=<uuid-кластера>

# активные сеансы
rac session list --cluster=<uuid-кластера>

# завершить конкретный сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

# рабочие процессы и занятая ими память
rac process list --cluster=<uuid-кластера>

Блокировка базы перед остановкой:

rac infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> \
  --infobase-user="Администратор" --infobase-pwd="пароль" \
  --sessions-deny=on --scheduled-jobs-deny=on \
  --denied-message="Плановые работы на сервере" --permission-code="12345"

Если у кластера задан администратор, к каждой команде добавьте --cluster-user и --cluster-pwd. Для подключения к удалённому серверу в конце команды укажите адрес: rac cluster list srv1c:1545. Полный список параметров конкретной команды выводит rac help session или rac help infobase.

💡 После работ снимите блокировку той же командой rac infobase update с --sessions-deny=off --scheduled-jobs-deny=off. Забытая блокировка — частая причина утренних звонков «база не пускает».

Почему служба агента сервера не останавливается

Служба висит в состоянии «Остановка» или systemctl stop ждёт минуту и больше. Обычно это значит, что рабочий процесс не может закончить начатое. Разберите симптом:

Диагностика: выберите симптом

Принудительное завершение на Windows выглядит так:

sc queryex "1C:Enterprise 8.3 Server Agent (x86-64)"
taskkill /PID 4312 /F
taskkill /F /IM rphost.exe
taskkill /F /IM rmngr.exe

Число 4312 — пример, подставьте значение из строки PID вывода sc queryex.

taskkill /F и kill -9 прерывают транзакции на полпути. СУБД откатит незавершённые изменения, но сеансовые данные кластера могут остаться повреждёнными. Используйте принудительное завершение только когда мягкая остановка не сработала.

Очистка сеансовых данных после остановки

Если после аварийного завершения базы работают с ошибками, практики чистят сеансовые данные. Это делается только при полностью остановленной службе и отсутствии процессов 1С.

  1. Откройте каталог кластера. На Windows по умолчанию это C:\Program Files\1cv8\srvinfo\reg_1541, на Linux — /home/usr1cv8/.1cv8/1C/1cv8/reg_1541. Фактический путь виден в параметре -d службы.
  2. Скопируйте весь каталог srvinfo в резервную папку.
  3. Удалите внутри reg_1541 папки с именами, начинающимися на snccntx.
  4. Запустите службу и проверьте вход в базы.

Файл 1CV8Clst.lst и папки с идентификаторами баз не трогайте. В файле хранится реестр кластера: список баз, администраторы, настройки. Его потеря означает регистрацию всех баз заново.

Нужно ли останавливать агент сервера для обновления конфигурации базы?
Нет. Обновление конфигурации требует монопольного доступа к одной базе, а не остановки сервера. Достаточно заблокировать сеансы в этой базе.
Можно ли остановить только одну базу, не трогая остальные?
Остановить базу как службу нельзя. Её блокируют: запрещают начало сеансов и регламентные задания, затем завершают активные сеансы. Остальные базы кластера продолжают работать.
Сколько ждать, прежде чем завершать процессы принудительно?
Ориентир — 5–10 минут после команды остановки. Если за это время в консоли не уменьшается число сеансов и не меняется нагрузка рабочего процесса, переходите к taskkill или kill.
Что будет с лицензиями после остановки службы?
Программные лицензии, привязанные к серверу, сохраняются: они лежат в файлах на диске, а не в памяти службы. После запуска агент снова их подхватит.
Как запустить службу обратно?
На Windows — «Запустить» в services.msc, net start или Start-Service с тем же именем. На Linux — systemctl start с именем юнита. После запуска проверьте вход в базу и снимите блокировку сеансов.