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

· 9 мин

Содержание

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

Служба называется «Агент сервера 1С:Предприятия 8.3» (процесс ragent.exe). Вместе с ней завершаются менеджер кластера rmngr.exe и все рабочие процессы rphost.exe. Останавливают её при обновлении платформы, очистке сеансовых данных кластера, переносе каталога srvinfo, перезагрузке сервера по графику.

Что проверить перед остановкой сервера 1С

Остановка агента сервера — штатная операция. Базы на SQL-сервере от неё не портятся: незавершённые транзакции СУБД откатывает сама. Проблема в другом — в людях и фоновых процессах, которые в этот момент работают.

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

Порядок подготовки:

  1. Посмотрите активные сеансы. В консоли администрирования серверов 1С раскройте Кластеры → <кластер> → Информационные базы → <база> → Сеансы. Видно, кто подключён и с какого компьютера.
  2. Предупредите пользователей. Письмом или в мессенджере, минут за 15–30. Назовите время и длительность простоя.
  3. Заблокируйте вход. В свойствах информационной базы в консоли включите флажок «Блокировка начала сеансов включена», задайте сообщение и код разрешения. Новые подключения перестанут проходить.
  4. Заблокируйте регламентные задания. Там же — флажок «Блокировка регламентных заданий включена». Иначе обмен или загрузка банка может стартовать за секунду до остановки.
  5. Дождитесь фоновых задач. Длинное закрытие месяца или пересчёт итогов лучше дождаться, чем прерывать.
  6. Проверьте, нет ли других служб на агенте. Если на сервере запущен сервер администрирования ras как отдельная служба, его останавливают отдельно (обычно не нужно).

Сеансы, которые висят после блокировки, можно завершить из той же консоли: выделить сеанс → контекстное меню → «Удалить». Это мягче, чем сразу гасить службу: пострадает один пользователь, а не все.

Перед остановкой агента сервера
Выполнено: 0 / 6

Как узнать точное имя службы 1С на сервере

Почти все ошибки команд остановки — из-за неверного имени. Оно зависит от разрядности и способа установки.

СитуацияТипичное имя службы
64-битный сервер1C:Enterprise 8.3 Server Agent (x86-64)
32-битный сервер1C:Enterprise 8.3 Server Agent
Несколько версий на одной машине, служба создана вручнуюлюбое, заданное администратором (часто с номером версии)

Не угадывайте — посмотрите. В командной строке:

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

В PowerShell:

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

Вывод покажет и системное имя (Name), и отображаемое (DisplayName). Для команд нужно системное. Если на сервере две службы — например, старый агент на портах 1540–1541 и новый на 2540–2541, — проверьте в свойствах службы строку «Исполняемый файл»: там видны путь к нужной версии ragent.exe и параметр -port.

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

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

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

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

Оснастку нужно открывать под учётной записью с правами локального администратора. Иначе кнопка «Остановить» будет неактивна.

Способ 2. Как остановить службу 1С из командной строки (CMD)

Командная строка нужна для удалённой работы через RDP, для скриптов и когда оснастка зависает. Запускайте cmd от имени администратора.

net stop — ждёт завершения

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

Команда ждёт, пока служба остановится, и пишет результат. Удобна в bat-файлах: следующая строка выполнится после фактической остановки (или после отказа).

sc stop — отправляет сигнал и сразу возвращается

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

sc stop возвращает управление сразу, состояние будет STOP_PENDING. Проверяйте его через sc query, пока не увидите STOPPED. Плюс sc — работа с удалённой машиной:

sc \\SRV-1C stop "1C:Enterprise 8.3 Server Agent (x86-64)"
КомандаКогда братьОсобенность
net stopРучная остановка, простые скриптыЖдёт результата
sc stopУдалённый сервер, свой цикл ожиданияВозвращается сразу
taskkill /FСлужба зависла в состоянии «Остановка»Аварийное завершение, только крайний случай

Способ 3. Остановка через PowerShell

PowerShell удобнее, когда нужно остановить службу на нескольких серверах или встроить проверку в сценарий.

$svc = "1C:Enterprise 8.3 Server Agent (x86-64)"
Stop-Service -Name $svc -Force
(Get-Service -Name $svc).WaitForStatus('Stopped', '00:02:00')
Get-Service -Name $svc

Ключ -Force останавливает и зависимые службы, если они есть. WaitForStatus ждёт до двух минут и выдаёт исключение, если служба так и не остановилась, — сценарий не пойдёт дальше вслепую.

Остановка на удалённом сервере (нужен включённый WinRM):

Invoke-Command -ComputerName SRV-1C -ScriptBlock {
    Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)" -Force
}

Перезапуск одной командой — Restart-Service -Name $svc -Force. Его используют, когда остановка нужна только ради сброса памяти рабочих процессов.

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

Способ зависит от версии платформы.

Платформа 8.3.21 и новее

С этих версий сервер поставляется с юнитом systemd, имя которого содержит номер версии. Найдите его:

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

Остановите и проверьте:

sudo systemctl stop srv1cv8-8.3.xx.xxxx@default.service
sudo systemctl status srv1cv8-8.3.xx.xxxx@default.service

Вместо 8.3.xx.xxxx подставьте номер из вывода первой команды. Чтобы сервер не стартовал при загрузке системы — sudo systemctl disable с тем же именем.

Старые версии с init-скриптом

На серверах, установленных по старой схеме, служба называется srv1cv83:

sudo systemctl stop srv1cv83
# или напрямую
sudo /etc/init.d/srv1cv83 stop

Проверка

ps -ef | grep -E "ragent|rmngr|rphost" | grep -v grep

Пустой вывод — сервер остановлен. Процессы работают под пользователем usr1cv8; если какой-то остался, его завершают sudo kill <PID>, а kill -9 — только если обычный сигнал не помог.

Если служба 1С не останавливается: ошибки и решения

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

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

taskkill /F /IM rphost.exe
taskkill /F /IM rmngr.exe
taskkill /F /IM ragent.exe

Автоматизация: скрипт остановки и планировщик заданий

Типовая задача — ночной перезапуск сервера 1С с очисткой сеансовых данных. Сеансовые данные лежат в каталоге кластера, обычно C:\Program Files\1cv8\srvinfo\reg_1541\, в папках snccntx*. Удалять их можно только при остановленной службе.

@echo off
set SVC="1C:Enterprise 8.3 Server Agent (x86-64)"
set REG=C:\Program Files\1cv8\srvinfo\reg_1541

net stop %SVC%
timeout /t 15 /nobreak >nul

taskkill /F /IM rphost.exe >nul 2>&1
taskkill /F /IM rmngr.exe  >nul 2>&1
taskkill /F /IM ragent.exe >nul 2>&1

for /d %%D in ("%REG%\snccntx*") do rd /s /q "%%D"

net start %SVC%
echo %date% %time% restart done >> C:\Scripts\1c_restart.log

Перед использованием сверьте путь srvinfo со своим: он указан в параметре -d в строке «Исполняемый файл» свойств службы. Удаляйте только папки snccntx*. Файлы 1CV8Clst.lst и 1CV8Reg.lst — это реестр кластера и список баз, их потеря означает повторную регистрацию всех баз.

Задание в планировщике создаётся командой (запуск каждую ночь в 03:00 от имени SYSTEM):

schtasks /Create /TN "1C restart" /TR "C:\Scripts\1c_restart.bat" /SC DAILY /ST 03:00 /RU SYSTEM /RL HIGHEST

На Linux аналог — задание cron от root с systemctl restart нужного юнита.

Ночной перезапуск обрывает сеансы тех, кто оставил 1С открытой с вечера. Предупредите пользователей о регламенте и выберите окно, когда не идут обмены и регламентные задания с длинным циклом.

Как убедиться, что сервер поднялся после работ

Запуск службы — та же команда с start: net start, Start-Service или systemctl start. Но статус «Выполняется» ещё не значит, что базы доступны. Проверьте по шагам:

  1. В диспетчере задач (или в ps на Linux) появились ragent, rmngr и хотя бы один rphost.
  2. Порты агента и менеджера кластера слушаются. В Windows: netstat -ano | findstr ":1540 :1541", на Linux: ss -tlnp | grep 154.
  3. Консоль администрирования открывает кластер, список информационных баз на месте.
  4. Тестовый вход в одну базу проходит без ошибок.
  5. В свойствах баз снята блокировка начала сеансов и регламентных заданий — её часто забывают, и наутро не работают обмены.

Если служба стартует и сразу останавливается, загляните в журнал Windows Просмотр событий → Журналы Windows → Приложение: ошибки агента пишутся туда. Частые причины — порт 1540 занят другим экземпляром агента или у учётной записи службы нет прав на каталог srvinfo.

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

Если консоли под рукой нет, сеансы перед остановкой смотрят утилитой rac (нужен запущенный сервер администрирования ras). Сначала получите идентификатор кластера командой rac cluster list, затем выполните rac session list --cluster=<id>. Пустой список — можно останавливать без последствий для пользователей. Остальные параметры утилиты смотрите в справке rac help.

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

Нужно ли останавливать службу сервера для обновления конфигурации базы?
Нет. Обновление конфигурации выполняют через Конфигуратор при работающем сервере, достаточно монопольного доступа к базе. Службу останавливают при обновлении самой платформы.
Что будет с пользователями, если остановить агент сервера?
Их сеансы оборвутся, клиент 1С покажет ошибку соединения с сервером. Проведённые документы сохранятся, открытые и не записанные — нет.
Можно ли остановить одну базу, не трогая остальные?
Нет, служба общая для всего кластера. Для одной базы включите блокировку начала сеансов и удалите её сеансы в консоли администрирования.
Сколько времени занимает штатная остановка?
Обычно от нескольких секунд до минуты. Дольше — если рабочий процесс выполняет тяжёлый запрос к СУБД.
Нужно ли останавливать SQL Server или PostgreSQL вместе с 1С?
Только если работы касаются самой СУБД. Для обновления платформы или очистки кэша кластера СУБД не трогают.