К статье
Практический материал

Администрирование · 8 мин

Как получить PID процесса 1С

Как узнать PID процесса 1С через диспетчер задач, командную строку, PowerShell и средствами платформы. Проверка результата, ошибки и FAQ.

PID (идентификатор процесса) нужен администратору 1С в нескольких типовых ситуациях: завершить зависший сеанс, найти процесс, который держит файл базы или порт, собрать диагностические данные, настроить мониторинг. Способ получения PID зависит от того, какой именно процесс вас интересует — клиентское приложение (1cv8.exe, 1cv8c.exe), сервер агента (ragent), менеджер кластера (rmngr) или рабочий процесс (rphost).

На одной машине одновременно может работать несколько процессов 1С, поэтому просто «найти процесс» недостаточно — нужно уметь отличить нужный по имени, порту или дополнительным признакам. Ниже разобраны практические способы для Windows и Linux, а также вариант получения PID программно через встроенный язык 1С.

Какие процессы 1С существуют и зачем различать их PID

Прежде чем искать PID, определите, какой компонент 1С вам нужен. Клиентская часть запускается как 1cv8.exe (толстый и тонкий клиент) или 1cv8c.exe (тонкий клиент). Сервер 1С:Предприятия состоит из агента ragent, менеджера кластера rmngr и одного или нескольких рабочих процессов rphost, которые и выполняют прикладной код.

Ошибка на этом этапе типична: администратор завершает первый попавшийся rphost, хотя сеанс пользователя обслуживал другой рабочий процесс. В результате «зависший» сеанс остаётся, а у части пользователей обрывается работа. Поэтому PID всегда стоит сопоставлять с конкретным сеансом или портом, а не брать процесс «наугад».

Как узнать PID через диспетчер задач Windows

Самый наглядный способ — графический. Откройте Диспетчер задач сочетанием Ctrl+Shift+Esc, перейдите на вкладку «Подробности» (в старых версиях Windows — «Процессы»). Если столбца PID нет, щёлкните правой кнопкой по заголовку любого столбца и отметьте пункт «ИД процесса (PID)».

Отсортируйте список по имени и найдите 1cv8.exe, ragent.exe, rmngr.exe или rphost.exe. Значение в столбце PID — искомый идентификатор. Для клиентского приложения можно также на вкладке «Процессы» щёлкнуть правой кнопкой по строке 1С и выбрать «Перейти к деталям» — откроется вкладка «Подробности» с уже выделенным процессом.

Порядок действий в диспетчере задач
  1. 1
    Нажмите Ctrl+Shift+Esc
  2. 2
    Откройте вкладку «Подробности»
  3. 3
    Добавьте столбец «ИД процесса (PID)» через контекстное меню заголовка
  4. 4
    Найдите 1cv8.exe, ragent, rmngr или rphost и считайте PID
  5. 5
    При необходимости сверьте пользователя и потребление памяти, чтобы выбрать нужный процесс

Как получить PID через командную строку и PowerShell

Классическая команда Windows — tasklist с фильтром по имени образа. Она выводит список процессов с PID и работает на любой машине без дополнительных настроек.

cmd
tasklist /FI "IMAGENAME eq rphost.exe"
tasklist /FI "IMAGENAME eq 1cv8.exe"

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

powershell
Get-Process rphost, ragent, rmngr, 1cv8 -ErrorAction SilentlyContinue | Select-Object Id, ProcessName, Path, WorkingSet64

Как связать PID с сетевым портом

Если нужно понять, какой процесс занимает порт кластера (по умолчанию диапазон 1540–1591), используйте netstat с ключом -o — он показывает PID владельца соединения. Затем по PID находите сам процесс.

cmd
netstat -ano | findstr :1541

Последний столбец вывода — PID процесса, слушающего порт. Для сервера 1С это обычно ragent (порт 1540) или rmngr (порт 1541).

Как узнать PID процесса 1С в Linux

На Linux-сервере используйте ps с фильтрацией или утилиту pgrep, которая сразу возвращает PID по имени процесса.

bash
ps aux | grep -E 'ragent|rmngr|rphost'
pgrep -a rphost

Ключ -a у pgrep добавляет к PID полную командную строку запуска — по ней видно экземпляр кластера и рабочие каталоги. Чтобы связать процесс с портом, подойдёт команда ss или lsof.

bash
ss -ltnp | grep 1540
lsof -i :1541

Как получить PID программно из 1С

Иногда PID нужен прямо в коде — например, для логирования или самодиагностики клиентского приложения. Встроенный язык не имеет штатной функции «мой PID», поэтому используют обходные пути: запрос к WMI на Windows или чтение системных данных.

1c
// Windows: PID текущего клиентского процесса через WMI
Локатор = Новый COMОбъект("WbemScripting.SWbemLocator");
Сервис = Локатор.ConnectServer(".", "root\cimv2");
Выборка = Сервис.ExecQuery("Select ProcessId from Win32_Process Where Name = '1cv8.exe'");
Для Каждого Процесс Из Выборка Цикл
    Сообщить("PID: " + Процесс.ProcessId);
КонецЦикла;

Учтите, что запрос вернёт все процессы 1cv8.exe на машине, включая чужие сеансы в терминальном режиме. Для точного определения «своего» процесса дополнительно фильтруйте по командной строке запуска (свойство CommandLine содержит параметры соединения) или по пользователю сеанса.

Как проверить, что вы нашли нужный процесс

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

Контрольные точки

Как проверить результат

Имя процесса
Норма

Соответствует цели: 1cv8 для клиента, rphost для рабочего процесса

Тревожный признак

Имя другое — вы смотрите не тот процесс

PID в консоли кластера
Норма

Совпадает с PID в диспетчере задач или ps

Тревожный признак

Значения различаются — возможно, процесс перезапустился

Пользователь процесса
Норма

Учётная запись ожидаемая (например, служебная учётка сервера 1С)

Тревожный признак

Процесс запущен под другим пользователем

Типичные ошибки и ограничения

Типичные ошибки
01
Завершение первого попавшегося rphost без сверки с сеансом — обрывается работа случайных пользователей
02
Поиск 1cv8.exe на сервере вместо rphost — клиентский процесс и рабочий процесс путают из-за похожих задач
03
Игнорирование того, что PID меняется при перезапуске — сохранённый вчера идентификатор сегодня указывает на другой процесс или ни на что
04
Использование netstat без ключа -o — в выводе нет PID и связь с процессом установить нельзя

Помните про права доступа: процессы службы агента сервера 1С запущены под служебной учётной записью, и диспетчер задач без повышенных прав может не показывать их полностью. Запускайте консоль от имени администратора, если процесс не виден.

FAQ

Чем отличается PID от номера сеанса в 1С?

Номер сеанса — внутренняя нумерация кластера 1С, а PID — идентификатор процесса операционной системы. Один рабочий процесс rphost с одним PID может обслуживать несколько сеансов одновременно, поэтому эти величины не взаимозаменяемы.

Почему в диспетчере задач не видно столбца PID?

Столбец скрыт по умолчанию. Откройте вкладку «Подробности», щёлкните правой кнопкой мыши по заголовку любого столбца и включите пункт «ИД процесса (PID)» в контекстном меню.

Как узнать, какой rphost обслуживает конкретного пользователя?

Откройте консоль администрирования сервера 1С, найдите сеанс пользователя и посмотрите, каким рабочим процессом он обслуживается — там указан PID этого процесса. Сверьте его с системным списком процессов.

Можно ли получить PID службы агента сервера 1С одной командой?

Да. В Windows выполните sc queryex с именем службы агента — в выводе будет строка PID. В Linux используйте systemctl show с параметром MainPID для соответствующего юнита или pgrep ragent.

Что делать, если процессов 1cv8.exe несколько и непонятно, какой мой?

В PowerShell выведите командную строку каждого процесса через Get-CimInstance Win32_Process с фильтром по имени: в CommandLine видны параметры подключения — имя базы, сервер и режим запуска, по которым можно определить нужный экземпляр.

Опасно ли просто смотреть PID?

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

Итог

Что важно запомнить

PID процесса 1С проще всего узнать через диспетчер задач с включённым столбцом «ИД процесса», из командной строки — через tasklist или pgrep, а связь с портом — через netstat -o или ss. Перед завершением процесса всегда сверяйте PID с консолью кластера, иначе можно оборвать чужие сеансы.