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

· 9 мин

Содержание

Служба сервера 1С 8.3 в Windows называется 1C:Enterprise 8.3 Server Agent (у 64-битной версии в имени есть (x86-64)). Остановить её можно в services.msc, командой net stop или Stop-Service, в Linux — через systemctl stop. Перед этим заблокируйте начало сеансов и регламентные задания в консоли кластера, иначе пользователи потеряют несохранённые данные.

Типичная ситуация: вечером нужно обновить платформу , а в базе ещё сидят трое из бухгалтерии и крутится обмен с сайтом. Если просто нажать «Остановить» в списке служб, сеансы оборвутся на середине записи документа. Ниже порядок, при котором остановка сервера 1С проходит спокойно, и запасные варианты на случай, когда служба не останавливается.

Когда нужно останавливать сервер 1С и как к этому подготовиться

Остановка агента сервера — не рутинная операция. Её делают в нескольких случаях:

  • 🔧 установка новой версии платформы или удаление старой;
  • 🧹 очистка сеансовых данных и кэша кластера (папки snccntx* внутри каталога srvinfo);
  • 🔁 перенос каталога кластера на другой диск или смена учётной записи службы;
  • 🛠 перенастройка портов агента (по умолчанию 1540, менеджер кластера — 1541, рабочие процессы — диапазон 1560–1591);
  • 🧯 зависание рабочих процессов rphost, которое не лечится перезапуском процесса из консоли;
  • 💾 холодное резервное копирование файлов кластера.

Для обычного обновления конфигурации или выгрузки .dt останавливать службу не нужно. Хватит заблокировать сеансы в конкретной базе.

Какие процессы останавливаются вместе со службой

Служба запускает процесс ragent.exe — агент сервера. Он, в свою очередь, держит менеджер кластера rmngr.exe и рабочие процессы rphost.exe, в которых и работают пользователи.

ПроцессРольЧто будет при остановке
ragentагент сервера, принимает подключенияклиенты не смогут подключиться
rmngrменеджер кластера, хранит реестркластер перестаёт управляться
rphostрабочие процессы, выполняют кодобрываются все сеансы и фоновые задания
rasсервер администрирования для racотдельная служба, останавливается отдельно

При остановке службы все сеансы во всех базах кластера завершаются сразу. Делайте это в нерабочее время или после предупреждения пользователей.

Блокировка сеансов в консоли «Администрирование серверов 1С»

Сама консоль кластера службу не останавливает. Но правильная остановка сервера 1С 8.3 начинается именно здесь: нужно выпустить людей и погасить фоновую активность.

  1. Запустите консоль «Администрирование серверов 1С Предприятия» из меню «Пуск». Если консоль не открывается или пустая, зарегистрируйте radmin.dll нужной версии: regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll" (номер версии подставьте свой).
  2. Раскройте Центральные серверы → <имя сервера> → Кластеры → <кластер> → Информационные базы.
  3. Откройте свойства базы и включите флажок Блокировка начала сеансов включена. Задайте время начала блокировки, сообщение для пользователей и код разрешения.
  4. Там же включите Блокировка регламентных заданий включена.
  5. Повторите для каждой базы кластера.
  6. Перейдите в узел Сеансы кластера. Подождите, пока пользователи выйдут сами. Оставшиеся сеансы выделите и удалите через контекстное меню.

Код разрешения пригодится вам самим: строка запуска с параметром /UC<код> пускает в базу даже при включённой блокировке.

То же самое через rac

Если консоль не установлена, используйте утилиту rac. Ей нужна запущенная служба ras (сервер администрирования, по умолчанию порт 1545).

rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac infobase update --cluster=<uuid_кластера> --infobase=<uuid_базы> --infobase-user=Админ --infobase-pwd=*** --sessions-deny=on --scheduled-jobs-deny=on
rac session list --cluster=<uuid_кластера>
rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>

Если в кластере задан администратор, добавьте к командам --cluster-user и --cluster-pwd. Полный список параметров — в rac help infobase и rac help session.

Способ 1. Как остановить службу сервера 1С через «Службы» Windows

Самый наглядный путь, подходит для разовой остановки.

  1. Нажмите Win+R, введите services.msc.
  2. Найдите службу «Агент сервера 1С:Предприятия 8.3». Если версий несколько, имя будет с указанием разрядности.
  3. Правой кнопкой → Остановить. Ожидание до 30–60 секунд нормально: агент по очереди гасит rphost и rmngr.
  4. Если не хотите, чтобы служба поднялась после перезагрузки сервера, в свойствах поставьте тип запуска Вручную или Отключена.

На вкладке «Восстановление» в свойствах службы бывает настроен перезапуск при сбое. Если вы потом будете снимать процесс принудительно, Windows может тут же запустить службу снова. Перед работами проверьте эту вкладку.

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

Бывает, что на одной машине работают две службы разных версий на разных портах. Чтобы не остановить не ту, откройте свойства службы и посмотрите строку «Исполняемый файл». В ней видны путь к версии платформы, ключ -port и каталог кластера -d.

Способ 2. Остановка службы 1С из командной строки Windows

Удобно для скриптов обслуживания и планировщика. Командную строку запускайте от имени администратора.

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

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

Затем остановите:

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

Команда net stop ждёт, пока служба полностью остановится, и пишет результат. Вариант через sc отправляет сигнал и сразу возвращает управление:

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

Состояние STOP_PENDING значит «останавливается», STOPPED — остановлена. Ключ -d и порт службы показывает sc qc "<имя службы>".

Чтобы отключить автозапуск:

sc config "1C:Enterprise 8.3 Server Agent (x86-64)" start= demand

Пробел после start= обязателен, без него sc выдаст ошибку синтаксиса.

Способ 3. Как остановить сервер 1С 8.3 через PowerShell

PowerShell удобнее, когда служб несколько или нужно сразу проверить процессы. Запуск — от администратора.

# найти службы 1С
Get-Service | Where-Object { $_.DisplayName -like "*1С*" -or $_.Name -like "*1C*" }

# остановить агент сервера
Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"

# убедиться, что не осталось рабочих процессов
Get-Process ragent, rmngr, rphost -ErrorAction SilentlyContinue

Если Stop-Service долго ждёт зависимые процессы, добавьте ключ -Force. Он не убивает процессы, а только разрешает остановить службу вместе с зависимыми службами.

Сервер администрирования ras — отдельная служба. При обновлении платформы останавливайте и её, иначе файлы в каталоге bin останутся занятыми:

Get-Service | Where-Object { $_.Name -like "*Remote Server*" } | Stop-Service

Способ 4. Остановка службы сервера 1С в Linux

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

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

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

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

systemctl list-units --all | grep -i srv1cv8

Затем остановите найденный unit:

sudo systemctl stop srv1cv8-8.3.24.1548@default.service
sudo systemctl disable srv1cv8-8.3.24.1548@default.service   # если не нужен автозапуск

Номер версии в примере подставьте свой. Сервер администрирования ras в новых версиях — тоже отдельный unit, его ищут той же командой с grep -i ras.

Если unit-файл не зарегистрирован, а сервер запускали вручную, systemd про него ничего не знает. Тогда ищите процесс через ps (см. следующий раздел).

Способ 5. Принудительная остановка, если служба не отвечает

Это крайний случай. Сеансы обрываются без корректного завершения транзакций, сервер СУБД откатит незавершённые изменения, но то, что пользователь не успел записать, потеряется.

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

Windows

  1. Узнайте PID процесса службы:
    sc queryex "1C:Enterprise 8.3 Server Agent (x86-64)"
    
    Строка PID — номер процесса ragent.
  2. Завершите его:
    taskkill /PID 4812 /F
    
  3. Добейте оставшиеся рабочие процессы и менеджер кластера:
    taskkill /IM rphost.exe /F
    taskkill /IM rmngr.exe /F
    

Если на сервере несколько кластеров разных версий, команда с /IM снимет процессы у всех. В таком случае завершайте процессы по PID, сверяя путь к исполняемому файлу в «Диспетчере задач» на вкладке «Подробности».

Linux

ps -eo pid,user,cmd | grep -E "ragent|rmngr|rphost" | grep -v grep
sudo kill <pid_ragent>          # сначала мягко, сигнал TERM
sudo kill -9 <pid_ragent>       # только если процесс не завершился за минуту
sudo pkill -9 rphost

Процессы сервера работают от пользователя usr1cv8, так что в выводе ps их легко отличить от остальных.

Как проверить, что сервер 1С действительно остановлен

Служба может показать «Остановлена», а один rphost остаться висеть. Проверка в три шага:

  1. Состояние службы. sc query "<имя службы>" в Windows или systemctl status <unit> в Linux — должно быть STOPPED / inactive (dead).
  2. Процессы. tasklist | findstr /i "ragent rmngr rphost" или pgrep -a -f "ragent|rmngr|rphost" — пустой вывод.
  3. Порты. Порт агента и менеджера больше не слушается:
    netstat -ano | findstr ":1540 :1541"
    
    В Linux: ss -tlnp | grep -E "1540|1541".

Если все три проверки чистые, можно ставить платформу, чистить кэш или переносить каталог кластера. Каталог по умолчанию в Windows — C:\Program Files\1cv8\srvinfo, но точный путь указан в ключе -d службы.

Очистку snccntx* делайте только при полностью остановленной службе. Каталог реестра кластера reg_1541 с файлом 1CV8Clst.lst не удаляйте: в них список баз и настройки кластера.

Запуск после работ

Служба поднимается теми же инструментами: net start "<имя службы>", Start-Service или sudo systemctl start <unit>. Если меняли тип запуска на «Вручную», верните «Автоматически», иначе после ближайшей перезагрузки сервер не стартует.

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

Типичные проблемы при остановке службы 1С

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

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

Нужно ли останавливать службу для обновления конфигурации?
Нет. Для обновления конфигурации достаточно заблокировать начало сеансов и регламентные задания в нужной базе. Остальные базы кластера продолжат работать.
Остановится ли сервер СУБД вместе со службой 1С?
Нет. PostgreSQL или MS SQL Server — отдельные службы, они продолжают работать. Данные баз хранятся в СУБД и при остановке 1С не затрагиваются.
Можно ли перезапустить сервер 1С одной командой?
Да. В PowerShell — Restart-Service -Name "<имя службы>", в Linux — sudo systemctl restart <unit>. Предупреждение о сеансах действует и здесь: перезапуск обрывает их так же, как остановка.
Как остановить сервер 1С по расписанию ночью?
Создайте задание в планировщике Windows, которое запускает bat-файл с net stop "<имя службы>", а через нужное время — net start. В Linux то же делают через cron или таймер systemd.
Сохранятся ли настройки кластера и список баз после остановки?
Да. Реестр кластера лежит в каталоге srvinfo и читается при следующем запуске. Удалять нельзя только его, а не сеансовые данные.