Какая платформа крутится на сервере: проверяем ragent, пакеты, systemd и rac

· 9 мин

Содержание

Быстрее всего узнать версию сервера 1С в Linux по пути к запущенному процессу агента: команда ps -eo pid,args | grep [r]agent покажет строку вида /opt/1cv8/x86_64/8.3.24.1342/ragent .... Номер в пути — это и есть версия платформы, на которой сейчас работает сервер 1С:Предприятие.

Частое заблуждение — смотреть на каталог установки и считать, что работает самая новая версия из /opt/1cv8/x86_64/. На одном Linux-сервере легко уживаются три-четыре релиза платформы, а служба запущена только из одного. Поэтому сначала проверяем процесс, а пакеты и каталоги — уже для уточнения.

Версия сервера 1С по запущенным процессам

Серверная часть 1С в Linux — это три вида процессов:

  • 🔹 ragent — агент сервера, слушает порт 1540;
  • 🔹 rmngr — менеджер кластера, по умолчанию порт 1541;
  • 🔹 rphost — рабочие процессы, их может быть несколько.

Все три запускаются из одного каталога платформы. Достаточно посмотреть любой из них.

Через ps

ps -eo pid,user,args | grep -E '[r]agent|[r]mngr|[r]phost'

Пример вывода:

 1123 usr1cv8  /opt/1cv8/x86_64/8.3.24.1342/ragent -daemon -port 1540 -regport 1541 -range 1560:1591 -d /home/usr1cv8/.1cv8/1C/1cv8
 1180 usr1cv8  /opt/1cv8/x86_64/8.3.24.1342/rmngr -port 1541 ...
 1215 usr1cv8  /opt/1cv8/x86_64/8.3.24.1342/rphost -range 1560:1591 ...

Квадратные скобки в шаблоне [r]agent — приём, чтобы grep не находил сам себя.

Из этой же строки видно ещё три полезные вещи: порт агента, диапазон портов рабочих процессов и каталог реестра кластера (ключ -d).

Если путь без номера версии

На старых установках из deb- и rpm-пакетов платформа лежит в /opt/1C/v8.3/x86_64/. Номера в пути нет, и ps ответа не даст. Тогда переходите к проверке пакетов (раздел ниже).

Точный путь через /proc

Бывает, что процесс запущен через символическую ссылку или из скрипта, и в args видна неполная команда. Узнайте PID и прочитайте реальный исполняемый файл:

pidof ragent
readlink -f /proc/$(pidof ragent)/exe

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

Для top и htop нажмите c (в top) или включите показ полного пути в настройках htop — увидите тот же путь к rphost прямо в мониторе нагрузки.

Служба systemd и каталог установки платформы

Второй источник — служба, через которую стартует сервер 1С. Её имя зависит от способа установки.

Платформа 8.3.20 и новее (единый установщик)

Начиная с 8.3.20 каждая версия ставится в собственный каталог /opt/1cv8/x86_64/<версия>/, а служба называется по шаблону с номером внутри:

systemctl list-units --all 'srv1cv8*'

Ответ выглядит так:

srv1cv8-8.3.24.1342@default.service  loaded active running 1C:Enterprise Server 8.3

Номер версии зашит прямо в имя юнита. Подробности покажет:

systemctl status 'srv1cv8-8.3.24.1342@default.service'

В блоке CGroup будут перечислены процессы ragent, rmngr, rphost с полными путями.

Старые установки (init-скрипт srv1cv83)

В пакетах до 8.3.20 служба называлась srv1cv83 без номера:

systemctl status srv1cv83

Её параметры (порты, каталог реестра, отладка) лежат в файле /etc/default/srv1cv83 на Debian/Ubuntu или /etc/sysconfig/srv1cv83 на RHEL-подобных системах. Версии там нет, но строка CGroup в статусе снова выдаст путь к бинарнику.

Какие версии установлены вообще

ls -1 /opt/1cv8/x86_64/
ls -1 /opt/1C/v8.3/ 2>/dev/null

Первый список — все платформы, поставленные новым установщиком. Наличие каталога не значит, что версия работает: сравнивайте с выводом ps или systemctl.

Проверка установленных пакетов 1С через менеджер пакетов

Если сервер ставился из deb или rpm, менеджер пакетов покажет и номер версии, и состав компонентов.

Debian, Ubuntu, Astra Linux

dpkg -l | grep -i 1c-enterprise

Пример:

ii  1c-enterprise-8.3.24.1342-common   8.3.24-1342  amd64  1C:Enterprise 8.3 common components
ii  1c-enterprise-8.3.24.1342-server   8.3.24-1342  amd64  1C:Enterprise 8.3 server

В старых сборках пакеты назывались 1c-enterprise83-common, 1c-enterprise83-server, а версия была только в колонке Version.

RHEL, CentOS, РЕД ОС, Rocky, Alma

rpm -qa | grep -i 1c
rpm -qi 1C_Enterprise83-server 2>/dev/null

rpm -qi выводит карточку пакета: версию, дату установки, размер. Дата установки помогает понять, когда платформу обновляли последний раз.

Когда пакетный менеджер молчит

Единый установщик setup-full-*.run в некоторых сценариях не регистрирует компоненты в dpkg/rpm как отдельные пакеты. Пустой вывод dpkg -l при живом ragent — не ошибка: смотрите каталог /opt/1cv8/x86_64/ и процессы.

Пакет server бывает установлен, а служба при этом запущена из другой версии. Пакетный менеджер отвечает на вопрос «что стоит на диске», а не «что работает».

Журналы службы и каталог реестра кластера

Логи помогают, когда нужно узнать не только текущую версию, но и когда её сменили.

Журнал systemd

journalctl -u 'srv1cv8*' --no-pager | grep -iE 'start|ragent' | tail -n 20

При каждом запуске systemd пишет строку старта юнита. Если версию недавно обновляли, в журнале будут записи по двум разным юнитам: старый остановлен, новый запущен. Так видно точную дату перехода.

Для старой службы:

journalctl -u srv1cv83 --since "30 days ago"

На системах без постоянного журнала systemd ищите те же записи в /var/log/syslog (Debian/Ubuntu) или /var/log/messages (RHEL).

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

По умолчанию реестр лежит в /home/usr1cv8/.1cv8/1C/1cv8/. Там каталог reg_1541 (номер совпадает с портом менеджера) с настройками кластера и журналами регистрации информационных баз.

Каталог общий для разных версий платформы: при обновлении сервер использует существующий реестр. Номера версии в именах файлов нет.

Чего не ждать от журнала регистрации

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

Технологический журнал (настраивается файлом logcfg.xml в каталоге conf платформы) по умолчанию выключен. Он пишет файлы в подкаталоги вида rphost_12345, где 12345 — PID процесса. По PID можно вернуться к readlink /proc/<PID>/exe, но для разовой проверки это лишний круг.

Как узнать версию через утилиту rac

Утилита rac — консольный клиент сервера администрирования ras. Она лежит в том же каталоге, что и ragent.

Шаг 1. Запустить сервер администрирования

Если ras ещё не работает , запустите его из каталога нужной версии:

/opt/1cv8/x86_64/8.3.24.1342/ras cluster --daemon

По умолчанию ras слушает порт 1545 и подключается к агенту на localhost:1540.

Шаг 2. Спросить агент о версии

/opt/1cv8/x86_64/8.3.24.1342/rac agent version

Ответ:

version : 8.3.24.1342

Это версия, которую сообщает сам агент сервера, а не установленный на диске файл. Если на хосте несколько агентов на разных портах, укажите адрес ras, который смотрит на нужный: rac host:1545 agent version.

Шаг 3. Проверить кластер

rac cluster list

Команда выведет UUID кластера, имя, хост и порт менеджера. Так вы убедитесь, что ras подключился к тому серверу, который вас интересует.

Набор подкоманд rac зависит от версии платформы. Полный список для вашей сборки покажет rac help, а справку по режиму — rac help agent.

Если на кластере включена аутентификация администраторов, добавьте ключи --agent-user и --agent-pwd. Без них часть команд вернёт ошибку доступа.

Проверка через сетевые порты сервера 1С

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

Кто слушает порты 1540 и 1541

ss -tlnp | grep -E ':(1540|1541|1545)\b'

В колонке users будет имя процесса и PID:

LISTEN 0 128 0.0.0.0:1540 0.0.0.0:* users:(("ragent",pid=1123,fd=11))

Дальше — readlink -f /proc/1123/exe, и вы получаете путь с номером версии.

Несколько версий на одном сервере

Два сервера разных версий могут работать одновременно, но на разных портах. Типичная раскладка:

ВерсияАгентМенеджерРабочие процессы
8.3.22.1709154015411560:1591
8.3.24.1342254025412560:2591

Клиент обращается сначала к агенту, затем к менеджеру кластера и рабочим процессам. Поэтому версия базы определяется тем, на какой порт агента указывает строка подключения: Srvr="srv1c:2540";Ref="buh"; уйдёт на 8.3.24.

Проверка со стороны клиента

Обычный клиент 1С должен совпадать с сервером по полному номеру версии. Если на рабочей станции стоит другая, при подключении появится сообщение о несоответствии версий клиента и сервера, где указаны обе версии. Это грубый, но рабочий способ, когда доступа к консоли Linux нет.

Аккуратнее — выполнить на сервере встроенный код, например через обработку в режиме 1С:Предприятие:

&НаСервереБезКонтекста
Функция ВерсияСервера()
	Возврат Новый СистемнаяИнформация().ВерсияПриложения;
КонецФункции

Вызванная на сервере, функция вернёт версию платформы рабочего процесса, например 8.3.24.1342.

Особенности по дистрибутивам и способам установки

Путь и способ проверки зависят не столько от дистрибутива, сколько от того, как ставили платформу.

Как установленоГде файлыИмя службыЧем проверять версию
Единый установщик .run (8.3.20+)/opt/1cv8/x86_64/<версия>/srv1cv8-<версия>@defaultps, systemctl, имя каталога
deb-пакеты новых версий/opt/1cv8/x86_64/<версия>/srv1cv8-<версия>@defaultdpkg -l, ps
deb/rpm до 8.3.20/opt/1C/v8.3/x86_64/srv1cv83dpkg -l или rpm -qa, rac agent version
Контейнер Dockerвнутри образапроцесс в контейнереdocker exec <контейнер> ps -eo args

Особенности дистрибутивов:

  • 🐧 Debian, Ubuntu, Astra Linux — пакеты .deb, проверка через dpkg -l или apt list --installed | grep 1c.
  • 🎩 RHEL-подобные и РЕД ОС — пакеты .rpm, проверка через rpm -qa или dnf list installed | grep -i 1c.
  • 🔒 Защищённые конфигурации (Astra в усиленном режиме, /proc, смонтированный с опцией hidepid) — ps и ss -p от обычного пользователя покажут не все процессы. Запускайте проверки через sudo.
  • 📦 Контейнеры — на хосте ps увидит процессы ragent, но путь будет внутри файловой системы контейнера. Смотрите тег образа и проверяйте изнутри контейнера.
Как быстрее узнать версию в вашей ситуации?

Частые ошибки при проверке версии сервера

  • ❌ Считать рабочей самую новую версию из /opt/1cv8/x86_64/. Каталоги остаются после обновлений годами. Работает та, из которой запущен ragent.
  • ❌ Путать версию клиента с версией сервера. 1cv8 на этом же Linux-хосте может быть другой версии, если клиент ставили отдельно.
  • ❌ Запускать rac из чужой версии. Утилита и ras лучше одной версии с агентом. При расхождении возможны ошибки протокола, которые выглядят как сбой сервера.
  • ❌ Смотреть ps без sudo в защищённых системах. Пустой вывод не значит, что сервер остановлен.
  • ❌ Перезапускать службу «чтобы проверить». Для определения версии перезапуск не нужен.

Если всё же решили остановить или перезапустить службу сервера 1С, все сеансы пользователей оборвутся, а несохранённые данные пропадут. Делайте это вне рабочего времени и после предупреждения пользователей.

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

Можно ли узнать версию сервера 1С без прав root?
Часто да: ps -eo args | grep [r]agent от обычного пользователя покажет путь к агенту. Ограничения бывают, если /proc смонтирован с hidepid или включён мандатный контроль доступа, тогда нужен sudo.
Чем версия платформы отличается от версии конфигурации?
Платформа — это программа 1С:Предприятие (например, 8.3.24.1342). Версия конфигурации — релиз прикладного решения, скажем Бухгалтерии. Сервер в Linux показывает только версию платформы.
Можно ли держать на одном сервере две версии платформы?
Да, если у них разные порты агента, менеджера и рабочих процессов, а также разные каталоги реестра кластера. Каждая версия работает как отдельный сервер.
Почему клиент подключается, хотя версия на компьютере другая?
Скорее всего, на рабочей станции установлено несколько версий, и стартер 1cestart сам выбрал подходящую под сервер. Проверьте список установленных платформ на компьютере.
Где в Linux лежит лицензия сервера 1С и связана ли она с версией?
Программные лицензии хранятся в каталоге /var/1C/licenses. Они не привязаны к номеру релиза платформы, но привязаны к параметрам оборудования. Обновление платформы лицензию не сбрасывает.