Какая платформа крутится на сервере: проверяем ragent, пакеты, systemd и rac
Содержание
Быстрее всего узнать версию сервера 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.1709 | 1540 | 1541 | 1560:1591 |
| 8.3.24.1342 | 2540 | 2541 | 2560: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-<версия>@default | ps, systemctl, имя каталога |
| deb-пакеты новых версий | /opt/1cv8/x86_64/<версия>/ | srv1cv8-<версия>@default | dpkg -l, ps |
| deb/rpm до 8.3.20 | /opt/1C/v8.3/x86_64/ | srv1cv83 | dpkg -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, но путь будет внутри файловой системы контейнера. Смотрите тег образа и проверяйте изнутри контейнера.
readlink -f /proc/$(pidof ragent)/exe. Номер версии будет в пути. Если пути с номером нет — dpkg -l | grep 1c-enterprise или rpm -qa | grep -i 1c.ss -tlnp по портам 1540, 2540 и т. п., затем readlink по PID каждого ragent. Сверьте порт со строкой подключения базы.Новый СистемнаяИнформация().ВерсияПриложения или попросите администратора прислать вывод rac agent version.journalctl -u 'srv1cv8*': старт нового юнита и остановка старого покажут момент обновления.Частые ошибки при проверке версии сервера
- ❌ Считать рабочей самую новую версию из
/opt/1cv8/x86_64/. Каталоги остаются после обновлений годами. Работает та, из которой запущенragent. - ❌ Путать версию клиента с версией сервера.
1cv8на этом же Linux-хосте может быть другой версии, если клиент ставили отдельно. - ❌ Запускать
racиз чужой версии. Утилита иrasлучше одной версии с агентом. При расхождении возможны ошибки протокола, которые выглядят как сбой сервера. - ❌ Смотреть
psбез sudo в защищённых системах. Пустой вывод не значит, что сервер остановлен. - ❌ Перезапускать службу «чтобы проверить». Для определения версии перезапуск не нужен.
Если всё же решили остановить или перезапустить службу сервера 1С, все сеансы пользователей оборвутся, а несохранённые данные пропадут. Делайте это вне рабочего времени и после предупреждения пользователей.
Частые вопросы
Можно ли узнать версию сервера 1С без прав root?
ps -eo args | grep [r]agent от обычного пользователя покажет путь к агенту. Ограничения бывают, если /proc смонтирован с hidepid или включён мандатный контроль доступа, тогда нужен sudo.Чем версия платформы отличается от версии конфигурации?
Можно ли держать на одном сервере две версии платформы?
Почему клиент подключается, хотя версия на компьютере другая?
1cestart сам выбрал подходящую под сервер. Проверьте список установленных платформ на компьютере.Где в Linux лежит лицензия сервера 1С и связана ли она с версией?
/var/1C/licenses. Они не привязаны к номеру релиза платформы, но привязаны к параметрам оборудования. Обновление платформы лицензию не сбрасывает.