Остановка сервера 1С:Предприятие в Windows и Linux без потери данных
Содержание
Сервер 1С:Предприятия останавливают так: завершают сеансы пользователей, затем останавливают службу агента сервера. В Windows это служба «Агент сервера 1С:Предприятия 8.3», в Linux — сервис srv1cv83 (имя зависит от установки). Вместе со службой гасятся менеджер кластера rmngr и рабочие процессы rphost.
Остановка обрывает все сеансы пользователей кластера. Несохранённые данные в открытых документах пропадут, фоновые задания прервутся. Лучшее время — вечер или выходные, после предупреждения пользователей. Ниже — от безопасного способа к жёсткому.
Что именно вы останавливаете
Серверная часть 1С состоит из нескольких процессов. Знать их полезно, чтобы не гасить лишнее.
ragent— агент сервера. Это и есть служба, которую вы запускаете и останавливаете. Клиенты подключаются к нему по порту 1540.rmngr— менеджер кластера, по умолчанию порт 1541. Раздаёт клиентам рабочие процессы.rphost— рабочие процессы. Выполняют серверный код, держат соединения с СУБД. Их может быть несколько.ras— сервер администрирования. Отдельная служба, нужна для консоли и утилитыrac. Если вы работаете только через консоль серверов, она может быть и не запущена.
Остановка агента убирает всё сразу. Остановка ras кластер не затрагивает: пользователи продолжают работать, пропадает только удалённое управление.
Перед остановкой: что проверить
Пять минут подготовки спасают от потерянной работы.
- Предупредите пользователей и назначьте время. Часто хватает сообщения в рабочий чат за 15–20 минут.
- Посмотрите, нет ли регламентных заданий: выгрузки, обмены, закрытие месяца , перепроведение. Прерванное длительное задание придётся запускать заново.
- Откройте список сеансов и убедитесь, что там нет сеансов с именем вида «Фоновое задание».
- Если останавливаете сервер перед обновлением платформы или СУБД, сделайте резервную копию информационных баз. Для остановки «просто так» это не нужно.
Если нужно лишь выгнать пользователей из одной базы, останавливать весь сервер незачем. Включите в свойствах базы в консоли серверов блокировку начала сеансов и завершите сеансы — остальные базы кластера продолжат работать.
Сколько ждать и что смотреть
Время остановки зависит от нагрузки. Если на сервере шло перепроведение или закрытие месяца, рабочий процесс сначала дорабатывает текущий вызов, потом закрывается. Ориентир: до минуты — норма, две-три минуты — повод заглянуть в диспетчер задач, больше пяти — процесс завис.
Откройте диспетчер задач (в Linux — top или htop) и посмотрите на rphost. Если он грузит процессор или диск, он работает, и убивать его рано. Если нагрузки нет и память не меняется, он завис.
Отдельно проверьте сторону СУБД. Долгая транзакция в PostgreSQL или MS SQL Server тоже держит рабочий процесс: он ждёт ответа базы. В этом случае сначала разберитесь с запросом на стороне СУБД, а не убивайте процесс 1С.
Корректное завершение сеансов через консоль кластера
Это самый мягкий способ. Он нужен, когда сервер ещё живой, а вам надо аккуратно освободить его.
- Откройте консоль серверов 1С (оснастка «Администрирование серверов 1С:Предприятия»).
- Разверните кластер, перейдите в раздел «Информационные базы» и выберите базу.
- Откройте её свойства и включите блокировку начала сеансов. Можно задать сообщение пользователям и период блокировки.
- Перейдите в раздел «Сеансы», выделите сеансы базы и завершите их кнопкой удаления.
После этого в кластере нет живых пользовательских сеансов, и службу можно останавливать без потерь. Заодно проверьте раздел «Соединения»: там видны подключения клиентов и фоновых заданий.
Если сеанс не завершается, значит, процесс завис на серверном вызове. Тогда переходите к принудительным способам ниже.
Какая учётная запись запускает службу
Служба 1С обычно работает не от «Локальной системы», а от отдельной учётной записи, часто с именем USR1CV8. Это нужно знать по двум причинам. Во-первых, остановить службу может только администратор, а вот процессы этой записи видны в диспетчере задач в колонке «Пользователь». Во-вторых, если после старта сервер не поднимается, первое, что проверяют, — права этой записи на каталог кластера и на каталоги баз.
Остановка службы агента в Windows
Основной путь для Windows Server.
Через оснастку «Службы».
- Нажмите
Win+R, введитеservices.msc. - Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии может быть разрядность, например x86-64).
- Правый щелчок → «Остановить».
Остановка может занять от нескольких секунд до минуты: агент ждёт завершения рабочих процессов.
Через командную строку. Откройте её от имени администратора. Точное имя службы посмотрите так:
sc query state= all | findstr /i "1C"
Команда выведет имена и отображаемые названия служб, в которых есть «1C». Дальше подставьте найденное имя:
net stop "ИмяСлужбы"
Через PowerShell:
Get-Service | Where-Object { $_.DisplayName -like "*1C*" }
Stop-Service -Name "ИмяСлужбы"
Первая строка покажет все службы 1С, вторая остановит нужную. Если на сервере стоит несколько версий платформы, служб будет несколько — выберите ту, под которой работает ваш кластер.
Если на сервере кроме агента запущен сервер администрирования (ras), его останавливают отдельно. Остановка агента ras не гасит.
Если служба не останавливается
Бывает, что статус службы висит на «Остановка». Обычно виноват зависший rphost: он выполняет вызов и не реагирует на сигнал завершения.
Сначала подождите две-три минуты. Если процесс работает с большим объёмом данных, ему нужно время, чтобы корректно закрыть соединения с СУБД.
Потом завершайте процессы по очереди, от рабочих к агенту.
Принудительное завершение в Windows
Посмотрите, что запущено:
tasklist /fi "imagename eq rphost.exe"
Завершите рабочие процессы:
taskkill /f /im rphost.exe
Затем менеджер кластера и агент, если служба всё ещё висит:
taskkill /f /im rmngr.exe
taskkill /f /im ragent.exe
Если нужно убить конкретный процесс, а не все сразу, берите его номер из tasklist и используйте taskkill /f /pid НОМЕР.
Принудительное завершение — крайняя мера. Транзакции в СУБД откатятся, но блокировки на стороне 1С и временные файлы могут остаться. После такой остановки при запуске сервер сам разберёт хвосты, но лучше проверить базу тестированием и исправлением, если были признаки повреждения.
Остановка сервера 1С в Linux
В Linux сервер запускается как сервис. Имя сервиса зависит от способа установки. Найдите его:
systemctl list-units --type=service | grep -i -E "1c|srv1cv8"
Типичное имя сервиса из дистрибутива — srv1cv83. Остановка:
sudo systemctl stop srv1cv83
sudo systemctl status srv1cv83
Если на сервере используется другая схема запуска (например, собственный unit-файл или init-скрипт), команда будет sudo service ИмяСервиса stop.
Проверьте, что процессов не осталось:
ps aux | grep -E "ragent|rmngr|rphost" | grep -v grep
Если пусто — сервер остановлен.
Принудительно. Сначала мягкий сигнал, он даёт процессам шанс закрыться:
sudo pkill -TERM rphost
Подождите минуту и посмотрите ещё раз. Остались процессы — жёсткое завершение:
sudo pkill -KILL rphost
sudo pkill -KILL rmngr
sudo pkill -KILL ragent
Либо по номеру: sudo kill -9 НОМЕР. Берите PID из вывода ps.
Ограничивайте pkill точным именем процесса. Шаблон вроде 1c заденет и сторонние процессы, в имени которых есть эти символы.
Управление через rac и сервер администрирования
Утилита rac — это консольный клиент к серверу администрирования (ras). Она лежит в каталоге платформы рядом с остальными исполняемыми файлами. Для остановки службы она не подходит, но подготовить кластер к остановке с её помощью удобно: посмотреть и завершить сеансы без графической консоли.
Сначала запустите сервер администрирования, если он не работает
(параметры и порт смотрите в справке ras help). Затем:
rac cluster list
rac session list --cluster=ИДЕНТИФИКАТОР_КЛАСТЕРА
Первая команда покажет идентификатор кластера, вторая — список сеансов. Для завершения конкретного сеанса используется rac session terminate с идентификаторами кластера и сеанса. Точный набор параметров вашей версии смотрите в rac help session: он меняется от релиза к релизу, и надёжнее довериться справке, чем памяти.
Если кластер защищён паролем администратора, добавьте параметры авторизации — они тоже описаны в справке.
Такой подход удобен для скриптов: ночное обновление может сначала вывести всех пользователей через rac, затем остановить службу командой ОС, обновить платформу и запустить службу снова.
Скрипт плановой остановки
Для ночных работ удобно собрать последовательность в один файл. Порядок такой: блокировка сеансов, пауза для завершения работы, остановка службы, работа (резервная копия, обновление), запуск службы. Пример для Windows:
@echo off
rem Остановка службы 1С на время резервного копирования
net stop "ИмяСлужбы"
if errorlevel 1 (
echo Служба не остановилась, копирование отменено
exit /b 1
)
rem здесь запускается резервное копирование
net start "ИмяСлужбы"
Проверка errorlevel важна: если служба не остановилась, копировать файлы под работающим сервером нельзя. Для серверной базы на PostgreSQL или MS SQL Server остановка 1С при копировании обычно не нужна: копия делается средствами СУБД. Остановка нужна в основном для обновления платформы, смены параметров кластера и профилактики оборудования.
Как запустить сервер обратно и убедиться, что всё в порядке
Запуск — обратная операция: net start "ИмяСлужбы" или кнопка «Запустить» в Windows, sudo systemctl start srv1cv83 в Linux.
После запуска проверьте три вещи:
- служба в состоянии «Выполняется», а в списке процессов есть
ragent,rmngr, и после первого подключения —rphost; - консоль серверов видит кластер и информационные базы;
- тестовое подключение клиента к базе проходит, а блокировка начала сеансов снята, если вы её включали.
Рабочие процессы создаются по требованию, поэтому сразу после старта rphost может не быть. Это нормально.
Если сервер не поднялся, смотрите журнал: в Windows — журнал событий и каталог служебных логов сервера, в Linux — journalctl -u srv1cv83. Частые причины: занятые порты 1540 и 1541 (старый процесс не умер), недоступный каталог данных кластера, недостаток прав у пользователя, под которым запускается служба.
Что делать, если остановка не помогает
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Служба в состоянии «Остановка» дольше пяти минут | Зависший rphost | Завершить rphost принудительно, затем дождаться остановки службы |
| После остановки порт 1540 занят | Остался процесс ragent | Найти процесс по порту и завершить: netstat -ano | findstr 1540 в Windows, ss -ltnp в Linux |
| Пользователи остались в базе после остановки | Подключены к другому серверу или к файловому режиму | Проверить строку соединения в списке баз клиента |
| Служба сама запускается снова | Настроен автоперезапуск при сбое | Отключить восстановление службы в её свойствах на время работ |
| Нет прав на остановку | Учётная запись без прав администратора | Запускать оболочку от имени администратора или через sudo |
Если сервер 1С периодически «зависает» и вы вынуждены останавливать его вручную, остановка лишь снимает симптом. Причину ищите в технологическом журнале и в нагрузке на СУБД.