Служба агента сервера 1С осталась в списке: убираем её чисто и без последствий

· 10 мин

Содержание

Чтобы удалить службу 1С:Агент сервера из списка служб Windows, остановите её и выполните в командной строке от имени администратора sc delete "<имя службы>". Имя берите не из колонки «Имя» в оснастке services.msc, а из поля «Имя службы» в её свойствах. Если служба не исчезает, закройте оснастку «Службы» и обновите список: Windows держит службу в состоянии «помечена для удаления», пока к ней открыт хотя бы один дескриптор.

Обычно это нужно после удаления старой версии платформы, когда в списке осталась «мёртвая» служба с путём к несуществующему ragent.exe. Ещё один частый случай — на сервере стоят две версии и две службы агента дерутся за порт 1540. В обоих случаях удаление делается без потери настроек кластера и с возможностью откатиться.

Что проверить до удаления службы агента

Агент сервера (ragent.exe) — это вход в кластер. Клиенты обращаются к нему на порт 1540, он передаёт их менеджеру кластера (rmngr.exe, порт 1541), а тот — рабочим процессам (rphost.exe). Остановили агента — остановился весь кластер на этом сервере.

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

Перед началом соберите четыре факта:

  1. 🔍 Точное имя службы. Откройте Win+R → services.msc, найдите службу с «1C:Enterprise 8.3 Server Agent» в названии, откройте свойства. Строка «Имя службы» на вкладке «Общие» — то, что нужно для команд.
  2. 📂 Путь к исполняемому файлу. Там же, поле «Исполняемый файл». В нём видна версия платформы (каталог вида C:\Program Files\1cv8\8.3.24.1467\bin\) и параметры запуска.
  3. 🗂️ Каталог кластера. Это значение параметра -d в строке запуска. По нему служба хранит реестр кластера, список баз и сеансовые данные.
  4. 🔌 Порты. Параметры -port, -regport, -range. Если вы потом ставите службу заново, их стоит повторить.

Список всех служб 1С в системе удобно вывести одной командой:

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

В PowerShell то же самое, плюс состояние и тип запуска:

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

Сохраните описание службы до удаления

Это единственный шаг, который даёт быстрый откат. Выгрузите ключ службы из реестра в файл:

reg export "HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>" C:\backup\ragent-service.reg

Если имя службы содержит пробелы и скобки, оставьте кавычки как в примере. Файл занимает пару килобайт, а восстановление из него займёт минуту.

Удаление службы агента сервера 1С командой sc delete

Это основной способ. Он не трогает файлы платформы и каталог кластера — только убирает запись о службе.

Шаг 1. Остановите службу

Откройте командную строку от имени администратора: Пуск, наберите cmd, правой кнопкой — «Запуск от имени администратора». Затем:

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

Имя в примере — типовое для 64-битного сервера. У вашей службы оно может отличаться, подставьте своё из свойств.

Дождитесь, пока в выводе sc query появится STATE : 1 STOPPED. Агент при остановке гасит менеджер кластера и рабочие процессы, на большом кластере это занимает до минуты.

Шаг 2. Удалите запись службы

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

Успешный ответ — [SC] DeleteService SUCCESS. Нужен пробел после знака равенства в командах sc с параметрами (state= all): без него команда не сработает. В sc delete параметров нет, нужен только сам аргумент.

Шаг 3. Проверьте результат

Закройте и снова откройте services.msc, нажмите F5. Службы в списке быть не должно. Для контроля из консоли:

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

Ответ [SC] EnumQueryServicesStatus:OpenService FAILED 1060 означает, что такой службы больше нет.

Альтернатива: ключ -rmsrvc у самого агента

Агент умеет снимать свою регистрацию сам. Перейдите в каталог bin той версии, которой принадлежит служба, и выполните:

cd /d "C:\Program Files\1cv8\8.3.24.1467\bin"
ragent.exe -rmsrvc

Способ хорош, когда файлы версии ещё на месте. Если платформу уже удалили и ragent.exe нет, остаётся sc delete.

СпособКогда подходитРиски
sc deleteВсегда, в том числе если файлы платформы удаленыНужно точное имя службы
ragent.exe -rmsrvcВерсия платформы установлена, файлы целыЗапуск не из той версии снимет не ту службу
Удаление компонента в установщикеУбираете сервер этой версии целикомУдаляются и файлы версии
Правка реестра вручнуюПервые два способа не сработалиОшибка в ключе может повредить другую службу

Если вы удаляете версию платформы целиком, проще идти через Параметры → Приложения (или Программы и компоненты): удаление версии с сервером 1С снимает и её службу. Отдельная ручная очистка нужна, когда служба осталась после неудачного удаления.

Если sc не помогает: удаление записи службы через реестр

Ручная правка реестра — крайний вариант. Применяйте её, когда sc delete возвращает ошибку, а служба при этом висит в списке с неверным путём.

Создайте точку восстановления Windows или хотя бы выгрузите ключ, как в разделе выше. Удаление не того раздела в Services может вывести из строя системную службу или драйвер.

Порядок:

  1. Запустите regedit от имени администратора.
  2. Перейдите в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
  3. Найдите подраздел с точным именем службы агента. Сверьтесь со значением ImagePath справа: там должен быть путь к ragent.exe.
  4. Правой кнопкой по подразделу — «Удалить».
  5. Перезагрузите сервер. Диспетчер служб читает этот раздел при старте, поэтому без перезагрузки служба из списка может не пропасть.

Удалять что-то ещё в реестре не требуется. Платформа не хранит настройки кластера в реестре — они лежат в каталоге кластера на диске.

Что остаётся на диске после удаления службы и как это вычистить

Служба удалена, но её «хвосты» остались. Решите, нужны ли они вам, прежде чем удалять.

Каталог кластера srvinfo

Это каталог из параметра -d. По умолчанию — srvinfo внутри каталога установки 1cv8 или профиля пользователя, от имени которого работала служба. В нём:

  • 📄 1CV8Clst.lst — реестр кластера: список информационных баз, их параметры подключения к СУБД, рабочие серверы, администраторы;
  • 📁 подкаталоги reg_1541 (номер равен порту менеджера кластера) с сеансовыми данными и журналами регистрации баз;
  • 🧹 сеансовые и временные данные, которые можно безболезненно потерять.

Не удаляйте srvinfo, если на этом сервере будет работать новая версия с тем же кластером. Без 1CV8Clst.lst кластер «забудет» все базы. Сами базы в SQL Server или PostgreSQL не пострадают, но регистрировать каждую в консоли придётся заново, а журналы регистрации пропадут.

Если сервер выводится из эксплуатации совсем — заархивируйте каталог и только потом удаляйте.

Пользователь службы

Установщик по умолчанию заводит локального пользователя USR1CV8. Если других служб 1С на сервере нет, его можно удалить в lusrmgr.msc или командой:

net user USR1CV8 /delete

Перед этим проверьте, что ни одна служба не работает от его имени: в services.msc отсортируйте список по колонке «Вход от имени».

Переменные окружения, брандмауэр, файлы версии

Установщик платформы не прописывает свои каталоги в PATH. Но администраторы часто добавляют туда путь к bin, чтобы вызывать rac и ragent без полного пути. Проверьте Система → Дополнительные параметры системы → Переменные среды: путь к удалённой версии оттуда нужно убрать, иначе консоль будет искать утилиты в пустом каталоге.

Заодно посмотрите правила брандмауэра Windows (wf.msc) для портов 1540, 1541 и диапазона 1560–1591. Если их создавали вручную под этот сервер, а сервер больше не нужен — отключите их. Каталог версии C:\Program Files\1cv8\<версия> после удаления через «Программы и компоненты» обычно исчезает сам. Если он остался пустым или с журналами, его можно удалить.

Почему служба 1С не останавливается и не удаляется: разбор ошибок

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

Как завершить зависший агент вручную

Если служба застряла в STOP_PENDING, узнайте номер процесса:

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

В выводе есть строка PID. Завершите процесс и его дочерние процессы кластера:

taskkill /f /pid <PID>
taskkill /f /im rmngr.exe
taskkill /f /im rphost.exe

Принудительное завершение rphost.exe обрывает все сеансы без сохранения. Незаписанные документы пользователей будут потеряны, а фоновые задания прервутся на середине. Если на сервере работают две версии платформы, /im завершит процессы обеих — тогда завершайте по PID каждый процесс отдельно.

После этого sc delete срабатывает с первого раза.

Конфликт двух агентов на одном порту

Типичная причина, по которой службу вообще хотят удалить, — после обновления платформы одна служба запускается, а вторая падает. В журнале Windows (eventvwr.msc → Журналы Windows → Приложение) видно, что порт 1540 занят. Кто его держит, покажет:

netstat -ano | findstr :1540

Последнее число в строке — PID. Сверьте его со службами через sc queryex. Старую службу удаляйте, новую оставляйте; если обе нужны, второй задают другие порты (например, 2540, 2541 и диапазон 2560:2591).

Как вернуть службу агента, если удалили не ту

Ошибиться легко: на сервере с двумя версиями имена служб отличаются одним номером. Вариантов восстановления три — от быстрого к ручному.

Что у вас осталось после удаления?

Регистрация службы через ragent

Команда выполняется из каталога bin нужной версии. Пример для типовых портов:

cd /d "C:\Program Files\1cv8\8.3.24.1467\bin"
ragent.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"

Затем запустите службу:

ragent.exe -start

Если -d указывает на старый каталог кластера, после старта откройте консоль администрирования серверов: базы должны быть на месте.

Регистрация через sc create

Подходит, когда нужно задать своё имя службы. Строка запуска агента в службе содержит ключи -srvc -agent:

sc create "1C:Enterprise 8.3 Server Agent (x86-64)" binPath= "\"C:\Program Files\1cv8\8.3.24.1467\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"C:\Program Files\1cv8\srvinfo\"" start= auto obj= ".\USR1CV8" password= "Пароль"

Пользователю службы нужны права на каталог кластера и право «Вход в качестве службы». Если служба не стартует с ошибкой 1069, дело именно в нём: проверьте пароль и это право в secpol.msc → Локальные политики → Назначение прав пользователя.

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

Удалятся ли базы, если удалить службу агента сервера?
Нет. Данные баз лежат в СУБД, а служба — только запись о запуске ragent.exe. Список баз кластера хранится в каталоге srvinfo, пока вы его не удалили.
Можно ли просто отключить службу вместо удаления?
Можно. В свойствах службы поставьте тип запуска «Отключена». Это удобно, если версия может ещё понадобиться: включить обратно — дело пары секунд.
Почему в PowerShell нет команды Remove-Service?
Она есть только в PowerShell 6 и новее. В Windows PowerShell 5.1, который встроен в Windows Server, используйте sc.exe delete — именно с .exe, иначе sc воспримется как псевдоним Set-Content.
Нужно ли удалять службу удалённого администрирования ras?
Если её регистрировали для этой версии — да, тем же способом через sc delete. Служба ras не создаётся установщиком автоматически, её обычно добавляют вручную, поэтому имя у неё произвольное.
Как убрать службу агента на Linux?
Там это юнит systemd. Найдите его через systemctl list-units --all | grep 1c, затем выполните systemctl stop и systemctl disable для найденного имени. Файлы юнита удаляются вместе с пакетом сервера.