Остановка сервера 1С:Предприятия без потерь: от блокировки сеансов до taskkill

· 10 мин

Содержание

Чтобы остановить службу 1С сервер, откройте Win + R → services.msc, найдите службу «Агент сервера 1С:Предприятия 8.3» (в английской версии — 1C:Enterprise 8.3 Server Agent (x86-64)) и нажмите «Остановить». То же из командной строки: net stop с именем службы. Вместе с агентом ragent.exe завершатся менеджер кластера rmngr.exe и все рабочие процессы rphost.exe.

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

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

Что сделать перед остановкой службы сервера 1С

Сервер 1С обслуживает сразу все базы кластера. Остановили службу ради одной базы — отключили всех. Поэтому сначала выясните, кто сейчас работает и что выполняется.

📌 Что проверить:

  • 👥 Активные сеансы. Список — в консоли кластера, ветка Информационные базы → <база> → Сеансы. Колонки показывают пользователя, компьютер и приложение (тонкий клиент, фоновое задание, Конфигуратор, веб-клиент).
  • ⏱ Фоновые и регламентные задания. Обмены, загрузка банковских выписок, обновление курсов. Задание, оборванное посреди обмена, может оставить пакет непринятым.
  • 🔒 Длинные операции. Закрытие месяца, перепроведение, загрузка .dt, обновление конфигурации . Их лучше дождаться.
  • 🗄 СУБД. Если после остановки 1С вы собираетесь перезапускать SQL Server или PostgreSQL, убедитесь, что резервное копирование базы не идёт прямо сейчас.

Блокировка начала сеансов

Чтобы за время ожидания никто не зашёл заново, включите блокировку в свойствах информационной базы (в консоли — правой кнопкой по базе → Свойства):

  1. Отметьте флажок «Блокировка начала сеансов включена».
  2. Укажите время начала и окончания блокировки.
  3. Впишите сообщение — его увидит пользователь при попытке входа, например: «Профилактика сервера до 21:30».
  4. Задайте код разрешения. С ним администратор сможет войти, добавив к строке запуска параметр /UC<код>.
  5. Отметьте «Блокировка регламентных заданий включена», чтобы новые задания не стартовали.

Для изменения свойств консоль попросит логин и пароль администратора этой информационной базы (пользователь 1С с правами администратора), а не только администратора кластера.

Если баз много, блокируйте те, где работают люди. Базы без активных сеансов остановка службы не повредит.

Способ 1. Остановка через консоль администрирования кластера

Консоль «Администрирование серверов 1С Предприятия» — это оснастка MMC. Сама служба из неё не останавливается, но вся «мягкая» часть работы делается здесь: завершить сеансы, убедиться, что рабочие процессы освободились.

Если консоль не открывается

Типичная ситуация — оснастка пишет, что не может создать объект, или открывается пустой. Причина: не зарегистрирована библиотека radmin.dll той версии платформы, которая стоит на сервере. Регистрация из командной строки, запущенной от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1342\bin\radmin.dll"

Номер версии подставьте свой — он совпадает с папкой в C:\Program Files\1cv8\. Версия консоли должна совпадать с версией сервера: разные релизы между собой не работают.

Порядок действий в консоли

  1. Откройте Central 1C:Enterprise 8.3 servers → <имя сервера> → Кластеры → <кластер>.
  2. Если кластер защищён паролем, введите логин администратора кластера.
  3. Перейдите в ветку Сеансы кластера — там видны сеансы всех баз сразу.
  4. Выделите сеансы (Ctrl+A для всех) → правая кнопка → Удалить. Это и есть принудительное завершение сеанса.
  5. Откройте ветку Рабочие процессы и проверьте, что у процессов не осталось соединений.
  6. После этого переходите к остановке службы (способ 2).

«Удалить» в ветке «Сеансы» удаляет только сеанс, а не базу и не пользователя. Не путайте с удалением информационной базы из кластера — эта команда находится в контекстном меню самой базы, и её нажимать не нужно.

Консоль и клиенты подключаются к агенту сервера по порту 1540. Менеджер кластера слушает 1541, рабочие процессы используют диапазон портов, заданный в свойствах рабочего сервера (по умолчанию 1560–1591). Если консоль не видит сервер с другой машины, проверьте именно эти порты в брандмауэре.

Способ 2. Как остановить службу 1С через службы Windows, net stop и PowerShell

Основной способ. Агент сервера при остановке сам гасит rmngr.exe и все rphost.exe.

Через оснастку «Службы»

  1. Win + R → services.msc → Enter.
  2. Найдите «Агент сервера 1С:Предприятия 8.3 (x86-64)». Если на сервере стоит несколько версий платформы, служб тоже несколько — смотрите на путь к исполняемому файлу в свойствах службы.
  3. Правой кнопкой → Остановить.
  4. Дождитесь статуса «Остановлена». Если висит «Остановка» дольше 2–3 минут — смотрите раздел про зависание ниже.

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

Узнать точное имя службы

Имя службы (внутреннее) и отображаемое имя различаются. Для команд нужно внутреннее. Узнать его можно так:

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

или в PowerShell:

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

Остановка из командной строки

Командная строка — от имени администратора:

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

net stop ждёт завершения и пишет результат. Альтернатива — sc stop "<имя>": она отправляет команду и сразу возвращается, поэтому статус потом проверяют через sc query "<имя>".

PowerShell:

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

Запуск обратно — net start или Start-Service с тем же именем.

Остановка на Linux

На Linux сервер 1С работает как сервис systemd. С 8.3.21 имя юнита содержит номер версии, в более старых установках использовался сервис srv1cv83. Найдите своё имя и остановите:

systemctl list-units --type=service | grep -i 1c
sudo systemctl stop <имя юнита>
systemctl status <имя юнита>
ps aux | grep -E "ragent|rmngr|rphost"

Последняя команда должна вернуть пустой результат (кроме самой строки grep).

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

СпособКогда подходитЧто учесть
Консоль кластераНужно аккуратно завершить сеансы перед остановкойСама службу не останавливает
services.mscРазовая остановка на сервере, есть RDPНужны права локального администратора
net stop, Stop-ServiceСкрипты, удалённая работа, регламентНужно внутреннее имя службы
taskkillСлужба зависла в статусе «Остановка»Транзакции рвутся, риск потери данных

Способ 3. Принудительное завершение процессов в Диспетчере задач

Крайняя мера, когда служба не реагирует. Процессы сервера:

  • 🟢 ragent.exe — агент сервера, это и есть процесс службы;
  • 🟡 rmngr.exe — менеджер кластера;
  • 🔵 rphost.exe — рабочие процессы, их может быть несколько;
  • ⚪ ras.exe — сервер администрирования, если он установлен отдельной службой.

Принудительное завершение рвёт транзакции посреди записи. В файловой базе это прямой путь к повреждению. В клиент-серверной транзакцию откатит СУБД, но документы, которые пользователь не успел записать, пропадут. Перед taskkill убедитесь, что сеансов нет или их потеря допустима.

Через Диспетчер задач

  1. Ctrl + Shift + Esc → вкладка «Подробности».
  2. Отсортируйте по имени, найдите rphost.exe.
  3. Правой кнопкой → «Снять задачу» для каждого рабочего процесса.
  4. Затем снимите rmngr.exe и последним ragent.exe.

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

Через командную строку

Сначала узнайте PID службы, которая зависла:

sc queryex "1C:Enterprise 8.3 Server Agent (x86-64)"

В выводе есть строка PID. Завершение по номеру и затем всех оставшихся процессов сервера:

taskkill /F /PID 4120
taskkill /F /IM rphost.exe
taskkill /F /IM rmngr.exe

/F — принудительно, /IM — по имени образа. Номер 4120 здесь пример, подставьте свой.

Скрипт остановки сервера 1С: rac и bat

Для ночных регламентов (бэкап, обновление платформы ) остановку удобно оформить скриптом. Мягкая часть — блокировка и завершение сеансов — делается через rac, консольную утилиту администрирования.

Подготовка: служба ras

rac работает не напрямую с агентом, а через сервер администрирования ras.exe. По умолчанию он слушает порт 1545. Регистрация ras как службы Windows (командная строка от администратора, путь к своей версии):

sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.24.1342\bin\ras.exe\" cluster --service --port=1545 localhost:1540" DisplayName= "Сервер администрирования 1С" start= auto
sc start "1C:Enterprise 8.3 Remote Server"

Пробел после binPath=, DisplayName= и start= обязателен — такой синтаксис у sc.

Основные команды rac

rem список кластеров и их идентификаторы
rac localhost:1545 cluster list

rem список сеансов кластера
rac localhost:1545 session list --cluster=<uuid кластера>

rem завершить один сеанс
rac localhost:1545 session terminate --cluster=<uuid кластера> --session=<uuid сеанса>

Блокировка начала сеансов и регламентных заданий базы выставляется командой rac infobase update с параметрами --sessions-deny=on и --scheduled-jobs-deny=on. Ей нужны логин и пароль администратора базы. Полный список параметров для вашей версии платформы — в rac help infobase.

Пример bat-файла

Сценарий: завершить все сеансы кластера и остановить службу.

@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1342\bin\rac.exe"
set SRV=localhost:1545
set SVC="1C:Enterprise 8.3 Server Agent (x86-64)"

for /f "tokens=2 delims=: " %%C in ('%RAC% %SRV% cluster list ^| findstr /b "cluster"') do set CL=%%C

for /f "tokens=2 delims=: " %%S in ('%RAC% %SRV% session list --cluster=%CL% ^| findstr /b "session "') do (
  %RAC% %SRV% session terminate --cluster=%CL% --session=%%S
)

timeout /t 30 /nobreak
net stop %SVC%

Скрипт берёт первый кластер из списка. Если кластеров несколько или на кластере стоит пароль администратора, добавьте --cluster-user и --cluster-pwd. Перед боевым запуском прогоните его на тестовом сервере и запустите вручную хотя бы раз — проверьте, что вывод rac разбирается так, как задумано.

Ставьте задание в Планировщик заданий Windows с запуском от учётной записи с правами администратора и галочкой «Выполнять с наивысшими правами». Иначе net stop вернёт «Отказано в доступе».

Служба 1С не останавливается: диагностика и журналы

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

Где смотреть причину

  • 📄 Журнал событий Windows. eventvwr.msc → Журналы Windows → Приложение и Система. Источник — служба агента 1С и диспетчер служб: там видно, когда служба получила команду остановки и сколько времени завершалась.
  • 📂 Каталог реестра кластера. По умолчанию C:\Program Files\1cv8\srvinfo\ (путь задаётся в параметрах службы, ключ -d). Внутри reg_1541 — настройки кластера и кэш сеансов.
  • 🔍 Технологический журнал. Включается файлом logcfg.xml в каталоге C:\Program Files\1cv8\conf\. Для диагностики зависаний пишут события EXCP (исключения) и PROC (старт и завершение процессов). После разбора журнал отключите — он быстро съедает диск.

Каталог srvinfo целиком не удаляйте. В нём список зарегистрированных баз и настройки кластера; после удаления базы придётся регистрировать заново, а назначения функциональности и пароли администраторов кластера пропадут.

Частые ошибки при остановке сервера 1С

  • ❌ Остановили сервер ради одной базы. Отключились все базы кластера. Если нужно выгнать людей только из одной — достаточно блокировки сеансов и завершения сеансов этой базы, службу трогать не надо.
  • ❌ Оставили тип запуска «Отключена». После работ сервер не поднялся сам после перезагрузки, утром никто не может войти.
  • ❌ Убили ragent.exe первым. Рабочие процессы остаются без управления и держат соединения с СУБД, пока их не снимут вручную.
  • ❌ Остановили не ту версию. На сервере две платформы, а работает только одна. Сверяйте путь к исполняемому файлу в свойствах службы.
  • ❌ Остановили 1С, но не дождались СУБД. Перезапуск SQL Server посреди резервного копирования портит само копирование, а не 1С.

Частые вопросы

Нужна ли лицензия на сервер при перезапуске службы?
Перезапуск службы на лицензию не влияет. Программная лицензия сервера привязана к параметрам компьютера, а не к сеансу службы, и после старта подхватывается снова.
Можно ли остановить сервер 1С удалённо, не заходя по RDP?
Да. Командой sc \имя_сервера stop “<имя службы>” или Stop-Service через PowerShell Remoting от учётной записи администратора этого сервера. Порты и права для удалённого управления службами должны быть открыты.
Чем перезапуск рабочего процесса отличается от остановки службы?
Рабочий процесс rphost.exe можно завершить отдельно — агент поднимет новый. Оборвутся только сеансы, которые обслуживал этот процесс. Остановка службы гасит весь кластер.
Сколько времени занимает нормальная остановка?
Обычно 5–30 секунд. Если сеансов нет, но остановка идёт больше 2–3 минут, значит, процесс чего-то ждёт: долгую транзакцию, фоновое задание или ответ СУБД.
Нужно ли останавливать службу для обновления конфигурации?
Нет. Для обновления конфигурации базы нужен монопольный доступ к этой базе — достаточно заблокировать сеансы и выгнать пользователей. Службу останавливают для обновления самой платформы, переноса каталога кластера или обслуживания сервера.