Зависла 1С на удалённом рабочем столе: снимаем процесс и сеанс без перезагрузки сервера
Содержание
Чтобы закрыть зависшую
1С на удаленке, нажмите внутри сеанса Ctrl+Alt+End (это аналог Ctrl+Alt+Del для удалённого рабочего стола), откройте Диспетчер задач и снимите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор). Если окно RDP не отвечает совсем, процесс снимает администратор сервера: через Диспетчер задач на вкладке «Пользователи», командой taskkill или выходом из сеанса Windows.
Для клиент-серверной базы есть второй шаг. Процесс на терминальном сервере закрыт, но сеанс 1С может ещё висеть в кластере и держать лицензию и блокировки. Его удаляют в консоли администрирования серверов 1С или утилитой rac.
1. Сначала поймите, зависла 1С или просто долго считает
Принудительное закрытие обрывает операцию на середине. Если 1С проводила документы или закрывала месяц, транзакция откатится, и работу придётся начинать заново. Поэтому сначала пара минут на диагностику.
Признаки настоящего зависания:
- 🔴 в Диспетчере задач у процесса статус «Не отвечает», и он не меняется несколько минут;
- 🔴 загрузка процессора процессом
1cv8c.exeоколо нуля, а окно не перерисовывается; - 🔴 память процесса растёт без остановки и подходит к лимиту сервера;
- 🔴 окно 1С не реагирует на
Escи на кнопку прерывания длительной операции.
Признаки долгой, но живой операции:
- 🟢 процесс стабильно грузит одно ядро процессора;
- 🟢 в клиент-серверном варианте рабочий процесс
rphost.exeна сервере 1С занят и тоже потребляет процессор; - 🟢 пользователь запускал тяжёлую обработку: закрытие месяца , перепроведение, выгрузку большого отчёта.
Длительную операцию в 1С часто можно прервать штатно: Ctrl+Break. Попробуйте это до того, как снимать процесс. Так 1С сама откатит транзакцию и останется в рабочем состоянии.
Ещё одна частая ситуация: «зависла» не 1С, а само подключение RDP. Окно чёрное или застыло, но на сервере всё работает. Проверьте это простым способом: закройте окно подключения крестиком (сеанс при этом лишь отключается, а не завершается) и подключитесь заново. Если дело было в подключении, пользователь увидит свою 1С в том же состоянии, в каком оставил.
1cv8c.exe или 1cv8.exe в Диспетчере задач сеанса пользователя.Ctrl+Break. Снимать процесс — крайняя мера.rac session terminate.1Cv8.1CD.2. Закрываем зависшую 1С через Диспетчер задач
Пользователь сам, внутри своего сеанса
Права администратора для этого не нужны: свои процессы пользователь может завершать сам.
- Нажмите
Ctrl+Alt+Endв окне удалённого рабочего стола. Если клавиатура перехвачена локальным компьютером, используйтеCtrl+Shift+Esc— Диспетчер задач откроется сразу. - Выберите «Диспетчер задач».
- Перейдите на вкладку «Подробности».
- Найдите
1cv8c.exeили1cv8.exe. Если окон 1С открыто несколько, ориентируйтесь на столбец «Состояние» и на загрузку процессора. - Щёлкните правой кнопкой → «Снять задачу» и подтвердите.
Если Диспетчер задач не открывается сочетанием клавиш, а на рабочем столе ничего не нажимается, остаётся меню «Пуск» → значок пользователя → «Выйти». Это завершит весь сеанс Windows вместе с 1С.
Администратор сервера, для чужого сеанса
- Откройте Диспетчер задач на терминальном сервере под учётной записью администратора.
- Перейдите на вкладку «Пользователи».
- Разверните строку нужного пользователя: внутри будут все его процессы.
- Найдите «1С:Предприятие», щёлкните правой кнопкой → «Снять задачу».
- Если не отвечает весь сеанс, щёлкните правой кнопкой по самому пользователю и выберите «Выйти».
«Выйти» закрывает все программы пользователя: Excel, почту, браузер. Несохранённые файлы пропадут. Предупредите человека заранее, если есть такая возможность.
Вариант «Отключить» сеанс не завершает. 1С останется висеть в памяти, а при следующем входе пользователь вернётся к тому же зависшему окну.
3. Завершаем процесс 1С из командной строки
Командная строка удобна, когда графический Диспетчер задач тормозит или нужно действовать быстро с другого сервера. Все команды ниже запускайте в командной строке от имени администратора.
Найти сеанс и процессы пользователя
:: Список сеансов на сервере: имя пользователя, ID сеанса, состояние
query session
:: Процессы 1С конкретного пользователя
tasklist /FI "IMAGENAME eq 1cv8c.exe" /FI "USERNAME eq ivanova" /V
В выводе tasklist есть PID процесса и номер сеанса. Ключ /V добавляет имя пользователя и заголовок окна: по заголовку видно, какая база открыта.
Снять процесс
:: По номеру процесса
taskkill /PID 7420 /F
:: Все тонкие клиенты одного пользователя
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"
:: Только те клиенты 1С, которые Windows считает зависшими
taskkill /F /IM 1cv8c.exe /FI "STATUS eq NOT RESPONDING"
Последняя команда хороша тем, что не трогает работающие окна. Но Windows помечает процесс как «не отвечающий» только после нескольких секунд без отклика. Тяжёлый отчёт тоже может попасть в этот список, поэтому без фильтра по пользователю запускайте её осторожно.
Завершить сеанс Windows целиком
:: 3 — номер сеанса из вывода query session
logoff 3
logoff закрывает сеанс со всеми программами. reset session 3 делает то же самое жёстче, без корректного выхода: используйте его, если logoff не сработал.
Таблица для выбора способа:
| Способ | Когда применять | Что теряется |
|---|---|---|
Ctrl+Break в 1С | Долгая операция, клиент живой | Только текущая операция |
Снять 1cv8c.exe | Завис один клиент 1С | Несохранённые данные в этом окне |
logoff / «Выйти» | Не отвечает весь сеанс RDP | Все программы пользователя |
| Удалить сеанс в кластере | Процесса уже нет, а база «занята» | Ничего, если клиента уже нет |
Перезапуск rphost.exe | Завис рабочий процесс сервера 1С | Сеансы всех пользователей на этом процессе |
4. Удаляем зависший сеанс в консоли кластера 1С
Этот раздел нужен для клиент-серверного варианта, когда база стоит на сервере 1С:Предприятия. Снятие клиента на терминальном сервере не всегда освобождает сеанс в кластере сразу. Пока он висит, пользователь видит сообщение о том, что уже работает в базе, а занятая лицензия не освобождается.
Через консоль администрирования серверов
- Запустите «Администрирование серверов 1С Предприятия» на сервере 1С или на любом компьютере, где установлена консоль.
- Разверните:
Central 1C:Enterprise 8.3 servers → <имя сервера> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы. - Найдите строку пользователя. Ориентируйтесь на столбцы с именем пользователя, компьютером и приложением.
- Щёлкните правой кнопкой → «Удалить».
Если консоль не открывается и пишет об ошибке регистрации компонента, перерегистрируйте radmin.dll той же версии, что и платформа, от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер платформы в пути подставьте свой: он должен точно совпадать с версией сервера 1С.
Через rac, без графической консоли
Утилита rac работает через сервер администрирования ras. Служба ras должна быть запущена (по умолчанию слушает порт 1545).
cd "C:\Program Files\1cv8\8.3.24.1548\bin"
:: 1. Узнать идентификатор кластера
rac cluster list
:: 2. Список сеансов кластера
rac session list --cluster=<id кластера>
:: 3. Завершить нужный сеанс
rac session terminate --cluster=<id кластера> --session=<id сеанса>
Если на кластере заданы администраторы, добавьте к командам --cluster-user=<имя> --cluster-pwd=<пароль>. Полный список параметров показывает rac help session.
Удаляйте только сеанс конкретного пользователя. Сеансы фоновых и регламентных заданий тоже видны в списке: их удаление прерывает обмены, загрузку курсов и другие задачи.
Если завис рабочий процесс сервера
Иногда виснет не клиент, а rphost.exe на сервере 1С: тогда «тормозят» сразу несколько пользователей. Рабочие процессы видны в консоли в ветке «Рабочие процессы» кластера.
Завершение rphost.exe обрывает сеансы всех пользователей, которых обслуживал этот процесс, а незавершённые транзакции откатываются. Делайте это вне рабочего времени или после того, как предупредили людей. Служба агента сервера запустит новый рабочий процесс сама.
5. Скрипты, чтобы закрывать зависшие процессы 1С массово
Когда на терминальном сервере работают 20–30 человек, каждый день снимать процессы руками неудобно. Ниже три готовых варианта.
Bat-файл для дежурного администратора
Закрывает все зависшие клиенты 1С на сервере и пишет, что было сделано, в журнал:
@echo off
set LOG=C:\Scripts\kill_1c.log
echo %date% %time% >> "%LOG%"
taskkill /F /IM 1cv8c.exe /FI "STATUS eq NOT RESPONDING" >> "%LOG%" 2>&1
taskkill /F /IM 1cv8.exe /FI "STATUS eq NOT RESPONDING" >> "%LOG%" 2>&1
Запускайте его от имени администратора. Если зависших процессов нет, taskkill просто сообщит, что задачи не найдены.
PowerShell: процессы 1С одного пользователя
# Запуск от имени администратора: без этого -IncludeUserName не работает
$user = "ivanova"
Get-Process -Name 1cv8c, 1cv8 -IncludeUserName -ErrorAction SilentlyContinue |
Where-Object { $_.UserName -like "*\$user" } |
ForEach-Object {
Write-Host "Завершаю PID $($_.Id), окно: $($_.MainWindowTitle)"
Stop-Process -Id $_.Id -Force
}
Удобно отдать такой скрипт старшему бухгалтеру или руководителю группы: администратор настраивает ярлык, а человек сам освобождает зависшую 1С коллеги.
PowerShell + rac: сеансы пользователя в кластере
Скрипт находит все сеансы указанного пользователя в кластере и завершает их:
$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$cluster = "<id кластера из rac cluster list>"
$user = "Иванова"
$lines = & $rac session list --cluster=$cluster
$sessionId = $null
foreach ($line in $lines) {
if ($line -match '^session\s*:\s*(\S+)') { $sessionId = $Matches[1] }
if ($line -match '^user-name\s*:\s*(.+)$') {
if ($Matches[1].Trim() -eq $user) {
Write-Host "Завершаю сеанс $sessionId"
& $rac session terminate --cluster=$cluster --session=$sessionId
}
}
}
Имя пользователя здесь — имя из списка пользователей информационной базы 1С, а не логин Windows. Проверьте вывод rac session list у себя: если в нём есть строки, которые скрипт не узнаёт, поправьте регулярные выражения.
Не ставьте массовое завершение на расписание в рабочее время. Скрипт по планировщику, который снимает «не отвечающие» процессы каждые 10 минут, рано или поздно оборвёт кому-нибудь закрытие месяца.
6. Настраиваем тайм-ауты, чтобы зависшие сеансы закрывались сами
Полностью убрать зависания настройками нельзя. Но можно сделать так, чтобы брошенные и отключённые сеансы не висели сутками.
Ограничения сеансов RDP в групповой политике
Путь в редакторе групповой политики (gpedit.msc) на терминальном сервере:
Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов удалённых рабочих столов → Ограничение сеансов по времени
Что стоит настроить:
| Параметр | Ориентир | Зачем |
|---|---|---|
| Ограничение для отключённых сеансов | 2–4 часа | Сеанс, где пользователь закрыл окно крестиком, завершится сам |
| Ограничение для активных, но бездействующих сеансов | 1–2 часа | Забытые на ночь сеансы не держат лицензии |
| Завершать сеанс при достижении ограничения | Включено | Без него сеанс по тайм-ауту только отключается |
Значения подберите под график: если бухгалтерия оставляет закрытие месяца на ночь, короткий лимит бездействия его оборвёт.
Параметры информационной базы в кластере 1С
В свойствах информационной базы в консоли кластера есть два параметра:
- ⏱ «Время засыпания пассивного сеанса» — через сколько секунд сеанс без связи с клиентом засыпает и освобождает лицензию;
- ⏱ «Время завершения спящего сеанса» — через сколько секунд спящий сеанс удаляется совсем.
Значения в секундах. Например, 300 и 3600: через 5 минут после обрыва сеанс заснёт, через час исчезнет. Это убирает «призраков», из-за которых пользователь не может войти повторно.
Перезапуск рабочих процессов
В свойствах кластера задаются «Интервал перезапуска» и «Допустимый объём памяти» рабочих процессов. Если rphost.exe со временем распухает до гигабайтов и сервер начинает тормозить, ограничение памяти даёт кластеру перезапустить процесс аккуратно: новые соединения уходят на новый процесс, а старый завершается после ухода пользователей.
Что ещё снижает число зависаний
- 💾 Хватает памяти терминальному серверу. Ориентировочно 1–1,5 ГБ на одного активного пользователя тонкого клиента с типовой конфигурацией.
- 🔄 Платформа на терминальном сервере совпадает с версией сервера 1С. Иначе клиент пытается работать с чужой версией и падает или виснет при подключении.
- 🧹 Чистый кэш клиента. При странных зависаниях после обновления запустите клиент с ключом
/ClearCacheили удалите папки кэша в профиле пользователя. Делайте это при закрытой 1С. - 🖨 Проверенные драйверы принтеров. Перенаправленные в RDP принтеры с «тяжёлыми» драйверами нередко подвешивают 1С при печати.
7. Частые ошибки при закрытии зависшей 1С
Отключают сеанс вместо выхода. «Отключить» в Диспетчере задач или крестик в окне RDP не завершают 1С. Зависший процесс продолжает держать память и лицензию.
Перезагружают весь терминальный сервер
. Ради одного зависшего клиента выбрасывают из работы всех. Почти всегда хватает taskkill по конкретному PID.
Снимают rphost.exe вместо клиента. Имя процесса похоже на «1С», но это серверный процесс. Его завершение обрывает работу многим людям сразу.
Удаляют в консоли все сеансы подряд. Вместе с зависшим уходят сеансы фоновых заданий и коллег.
Не дожидаются завершения транзакции. Процесс сняли через 30 секунд после запуска перепроведения за квартал. Операцию начинают снова, и теряется ещё больше времени.
Частые вопросы
Можно ли закрыть зависшую 1С на удаленке без прав администратора?
Ctrl+Shift+Esc или Ctrl+Alt+End и снимите 1cv8c.exe. Процессы других пользователей завершает только администратор.Пропадут ли данные, если снять процесс 1С?
Почему после снятия процесса 1С пишет, что пользователь уже работает в базе?
Что делать, если не открывается сама консоль администрирования кластера?
radmin.dll нужной версии платформы через regsvr32 или используйте утилиту rac через службу ras.