Агент сервера 1С не нужен до утра: корректная остановка службы без потерь данных
Содержание
Чтобы остановить агент сервера 1С, откройте Win+R → services.msc, найдите службу «Агент сервера 1С:Предприятия 8.3», нажмите правой кнопкой и выберите «Остановить». Вместе с агентом (ragent.exe) завершатся менеджер кластера (rmngr.exe) и все рабочие процессы (rphost.exe). Все пользователи, работающие с базами этого сервера, потеряют сеансы.
Частая ошибка — сразу «гасить» rphost.exe в диспетчере задач, потому что так быстрее. Процесс исчезнет, но через несколько секунд менеджер кластера запустит новый, а незаписанные данные пользователей пропадут. Корректный порядок другой: запретить новые сеансы, дождаться выхода людей, остановить службу Windows. Всё ниже — про платформу 8.3 на Windows Server 2016 и новее, от конфигурации порядок не зависит.
Остановка агента обрывает работу всех пользователей во всех базах кластера. Делайте это вне рабочего времени или после предупреждения людей.
Почему агент 1С нельзя просто «убить» через диспетчер задач
Сервер 1С — это не один процесс, а связка из трёх:
| Процесс | Роль |
|---|---|
ragent.exe | Агент сервера: принимает подключения клиентов и консоли, по умолчанию порт 1540 |
rmngr.exe | Менеджер кластера: распределяет сеансы, порт 1541 |
rphost.exe | Рабочие процессы: выполняют код и обращаются к СУБД, порты из диапазона 1560–1591 |
Служба Windows запускает только ragent.exe, остальные процессы он порождает сам. Когда вы останавливаете службу, агент по очереди закрывает менеджер и рабочие процессы, сохраняет состояние кластера и выходит.
Что происходит при принудительном завершении процесса:
- 🔴 незаписанные документы пользователей теряются, открытые транзакции откатываются на стороне СУБД;
- 🔴 файлы реестра кластера в каталоге
srvinfo(в первую очередь1CV8Clst.lst) могут остаться в повреждённом состоянии — тогда после запуска в консоли пропадают базы или кластер; - 🟡 сеансовые данные (папки
snccntx*) остаются «грязными», сервер стартует медленнее или с ошибками; - 🟡 если «убили» только
rphost.exe, менеджер кластера тут же поднимет новый — вы ничего не остановите.
Диспетчер задач — последний инструмент, а не первый. Когда он действительно нужен, разобрано в последнем разделе.
Подготовка: запрет новых сеансов через консоль кластера 1С
Сама консоль администрирования серверов 1С остановить службу не умеет. Зато через неё удобно подготовить сервер, чтобы остановка прошла без сюрпризов.
Блокировка начала сеансов
- Откройте «Администрирование серверов 1С Предприятия».
- Разверните
Центральные серверы 1С → имя сервера → Кластеры → Локальный кластер → Информационные базы. - Откройте свойства нужной базы.
- Включите флажок «Блокировка начала сеансов включена», задайте время начала и окончания, напишите сообщение для пользователей.
- Если планируете работать в Конфигураторе во время блокировки, заполните «Код разрешения» — с ним можно войти, несмотря на запрет.
Блокировку ставят по каждой базе отдельно. На сервере с десятком баз это долго — тут выручает rac (ниже).
Завершение оставшихся сеансов
В ветке «Сеансы» базы или кластера видно, кто ещё работает. Выделите сеансы и выберите «Удалить» в контекстном меню. Перед этим позвоните или напишите людям: у них закроется программа без сохранения.
Фоновые задания (обмены, загрузка курсов, регламентные операции) тоже работают как сеансы. Если в базе крутится долгий обмен, дайте ему закончиться — иначе после запуска его придётся перезапускать с начала.
То же через rac
Если на сервере запущена служба удалённого администрирования (ras), то же самое делается из командной строки:
rac cluster list
rac session list --cluster=<id_кластера>
rac session terminate --cluster=<id_кластера> --session=<id_сеанса>
Идентификатор кластера возьмите из вывода первой команды. Если на кластере заданы администраторы, добавьте --cluster-user и --cluster-pwd. Остальные параметры смотрите в rac help и rac help session — набор зависит от версии платформы.
💡 После завершения работы с сервером не забудьте снять блокировку сеансов в свойствах баз. Иначе утром пользователи увидят ваше сообщение вместо программы.
Способ 1: остановка агента сервера 1С в оснастке «Службы»
Самый понятный вариант, подходит для разовой остановки.
- Нажмите
Win+R, введитеservices.msc, нажмите Enter. Оснастку можно открыть и через «Диспетчер серверов» → «Средства» → «Службы». - Найдите в списке службу «Агент сервера 1С:Предприятия 8.3». В конце названия бывает разрядность
(x86-64)или номер версии, если на сервере установлено несколько платформ. - Правой кнопкой → «Остановить».
- Дождитесь, пока в колонке «Состояние» исчезнет «Выполняется». Обычно это 10–60 секунд, на нагруженном сервере дольше.
- Откройте диспетчер задач, вкладку «Подробности», и убедитесь, что
ragent.exe,rmngr.exeиrphost.exeпропали.
Если нужно, чтобы служба не стартовала сама
Остановленная служба с типом запуска «Автоматически» поднимется после перезагрузки сервера. Если вы чините сервер и перезагружаетесь несколько раз:
- откройте свойства службы, вкладка «Общие»;
- поставьте «Тип запуска» → «Вручную» или «Отключена»;
- после работ верните «Автоматически».
Загляните и на вкладку «Восстановление». Если там для сбоев стоит «Перезапуск службы», Windows поднимет агент после аварийного завершения процесса. При штатной остановке через «Службы» это не срабатывает, а вот при taskkill — может.
Какую из служб 1С останавливать
На сервере бывает несколько служб с «1С» в названии:
| Служба | Что делает | Нужно ли останавливать |
|---|---|---|
| Агент сервера 1С:Предприятия 8.3 | Сам сервер 1С | Да |
Сервер администрирования 1С:Предприятия 8.3 (ras) | Даёт доступ консоли и rac по порту 1545 | Нет, базы через неё не работают |
| Несколько агентов разных версий | Каждый — свой кластер со своими портами | Только нужный |
Если стоят два агента разных версий, сверьте путь в поле «Исполняемый файл» на вкладке «Общие»: там видна папка платформы и порт (-port 1540 или другой).
Способ 2: остановка службы 1С из командной строки (sc, net stop, PowerShell)
Командная строка нужна, когда вы работаете по SSH или PowerShell Remoting, пишете скрипт или просто не хотите листать список служб.
Шаг 1. Узнайте точное имя службы
Отображаемое имя в оснастке и внутреннее имя службы различаются. Для команд нужно внутреннее. Найдите его так (командная строка от имени администратора):
sc query state= all | findstr /i "1C"
Или в PowerShell:
Get-Service | Where-Object { $_.DisplayName -like "*1С*" -or $_.Name -like "*1C*" } | Format-Table Name, DisplayName, Status
Нужна строка SERVICE_NAME в выводе sc или колонка Name в PowerShell. Обычно это что-то вроде 1C:Enterprise 8.3 Server Agent (x86-64) — с пробелами и двоеточием, поэтому в командах имя всегда берут в кавычки.
Шаг 2. Остановите службу
Три равноценных варианта:
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
sc stop "1C:Enterprise 8.3 Server Agent (x86-64)"
Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
Подставьте своё имя из шага 1.
| Команда | Особенность |
|---|---|
net stop | Ждёт завершения и пишет «Служба успешно остановлена». Удобна в bat-скриптах |
sc stop | Отправляет команду и сразу возвращает управление. Состояние проверяют через sc query |
Stop-Service | Ждёт завершения, с ключом -Force останавливает и зависимые службы |
Шаг 3. Проверьте результат
sc query "1C:Enterprise 8.3 Server Agent (x86-64)"
tasklist | findstr /i "ragent rmngr rphost"
В первой команде должно быть STATE : 1 STOPPED, вторая не должна ничего выводить. Запуск — net start, sc start или Start-Service с тем же именем.
Как остановить агент 1С на удалённом сервере
Заходить на сервер по RDP не обязательно. Ваша учётная запись должна быть администратором на удалённой машине, а брандмауэр — пропускать удалённое управление службами.
Через оснастку «Службы»
- Откройте
services.mscна своём компьютере. - В левой панели правой кнопкой по «Службы (локальные)» → «Подключиться к другому компьютеру».
- Введите имя или IP-адрес сервера.
- Остановите агент так же, как локально.
Через sc
У sc первым параметром можно передать имя сервера:
sc \\SRV-1C stop "1C:Enterprise 8.3 Server Agent (x86-64)"
sc \\SRV-1C query "1C:Enterprise 8.3 Server Agent (x86-64)"
net stop удалённо не работает
— только sc или PowerShell.
Через PowerShell Remoting
Invoke-Command -ComputerName SRV-1C -ScriptBlock {
Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
Get-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
}
Работает, если на сервере включён WinRM (на Windows Server он включён по умолчанию). Ошибка «Отказано в доступе» почти всегда означает, что учётная запись не входит в группу локальных администраторов сервера.
Автоматизация: скрипт перезапуска и планировщик заданий
Регулярный ночной перезапуск агента с очисткой сеансовых данных — распространённая практика на серверах, где память рабочих процессов со временем растёт. Ниже скрипт, который останавливает службу, чистит кэш сеансов и запускает её обратно.
@echo off
set SVC=1C:Enterprise 8.3 Server Agent (x86-64)
set SRVINFO=C:\Program Files\1cv8\srvinfo
net stop "%SVC%"
timeout /t 15 /nobreak >nul
rem Добиваем рабочие процессы, если служба остановилась не полностью
taskkill /F /IM rphost.exe >nul 2>&1
taskkill /F /IM rmngr.exe >nul 2>&1
rem Очистка сеансовых данных
for /d %%D in ("%SRVINFO%\reg_1541\snccntx*") do rd /s /q "%%D"
net start "%SVC%"
echo %date% %time% restart done >> C:\scripts\restart1c.log
Перед использованием проверьте:
- 📁 путь к
srvinfo: его видно в поле «Исполняемый файл» службы после ключа-d; - 📁 имя папки
reg_1541: цифры совпадают с портом менеджера кластера, при нестандартных портах будут другими; - 🔑 имя службы — из шага 1 предыдущего раздела.
Никогда не удаляйте весь каталог srvinfo или файл 1CV8Clst.lst. В них хранится список баз кластера. Чистить можно только папки snccntx*, и только при остановленной службе.
Расписание в планировщике заданий
Создайте задание, которое запускает скрипт от системной учётной записи каждое воскресенье в 3:00:
schtasks /create /tn "Restart 1C Agent" /tr "C:\scripts\restart1c.bat" /sc weekly /d SUN /st 03:00 /ru SYSTEM /rl HIGHEST
Время ставьте так, чтобы не пересечься с резервным копированием СУБД, регламентными заданиями баз и ночными обменами. Если бэкап SQL идёт в 2:00 и длится час, перезапуск в 3:00 его оборвёт.
Типичные ошибки при остановке службы и что они значат
Если агент 1С не останавливается никаким способом
Служба висит в «Остановке» больше пяти минут, net stop не помогает. Действуйте по нарастающей.
- Посмотрите, что держит сервер. Если база на MS SQL или PostgreSQL, проверьте активные запросы и блокировки в СУБД. Часто это долгий запрос от обработки или обмена, и проще дождаться его конца.
- Узнайте PID агента:В выводе есть строка
sc queryex "1C:Enterprise 8.3 Server Agent (x86-64)"PID. - Завершите процессы принудительно — сначала рабочие, потом менеджер, потом агент:Если на сервере стоят агенты нескольких версий, не используйте
taskkill /F /IM rphost.exe taskkill /F /IM rmngr.exe taskkill /F /PID <PID_агента>/IM: так вы убьёте процессы всех кластеров. Завершайте по PID, который виден в диспетчере задач вместе с командной строкой процесса. - Почистите
snccntx*в папкеreg_<порт>при полностью остановленных процессах. - Запустите службу и проверьте в консоли, что все базы на месте.
- Если и после этого не стартует — перезагрузите сервер.
Перед принудительным завершением сделайте копию каталога srvinfo. Если после taskkill в консоли пропал кластер или базы, остановите службу и верните 1CV8Clst.lst из этой копии. Пересоздавать кластер и заново регистрировать базы не нужно.
Если зависания повторяются, ищите причину, а не перезапускайте сервер каждую ночь. Включите технологический журнал (файл logcfg.xml в каталоге conf платформы) с событиями EXCP и PROC — он покажет, на чём падают или зависают рабочие процессы.