Какая платформа стоит на сервере 1С под Linux: команды для проверки

· 9 мин

Содержание

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

Если сервер остановлен или установлено несколько версий, проверьте пакеты (dpkg -l или rpm -qa), содержимое /opt/1cv8/x86_64/ и юнит службы в systemd. Все команды ниже выполняются в терминале сервера по SSH, права root нужны только там, где это сказано.

С чего начать: где на Linux живёт платформа 1С

Перед проверкой полезно понимать, куда установщик кладёт файлы. От этого зависит, где искать номер версии.

Как ставилиКаталог платформыПример
Единый установщик setup-full-…run (платформа 8.3.20 и новее)/opt/1cv8/x86_64/<версия>//opt/1cv8/x86_64/8.3.24.1467/
Отдельные пакеты .deb или .rpm старых версий/opt/1C/v8.3/x86_64/одна версия на каталог
32-битная сборка (редко)/opt/1cv8/i386/<версия>/ или /opt/1C/v8.3/i386/—

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

Сервер 1С на Linux работает под отдельным пользователем, обычно usr1cv8. Его каталог с настройками кластера — /home/usr1cv8/.1cv8/1C/1cv8/. Там лежит реестр кластера 1cv8wsrv.lst, но номера версии платформы в нём искать не нужно.

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

Версия по работающим процессам ragent, rmngr и rphost

Сервер 1С — это три вида процессов:

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

Все они запускаются из каталога конкретной версии. Значит, путь к исполняемому файлу сразу выдаёт номер.

Команды

# Полные пути процессов сервера 1С
ps -eo pid,user,args | grep -E '[r]agent|[r]mngr|[r]phost'

# Путь к исполняемому файлу конкретного процесса (подставьте PID)
sudo readlink -f /proc/<PID>/exe

Пример вывода первой команды:

 1234 usr1cv8  /opt/1cv8/x86_64/8.3.24.1467/ragent -daemon -port 1540 -regport 1541 -range 1560:1591 -d /home/usr1cv8/.1cv8/1C/1cv8

Из строки видно сразу всё: версия 8.3.24.1467, порт агента 1540, порт менеджера 1541, диапазон рабочих процессов 1560–1591 и каталог данных кластера.

Если ragent запущен из /opt/1C/v8.3/x86_64/, номера в пути нет. Переходите к проверке пакетов — она покажет, какая версия лежит в этом каталоге.

Если серверов несколько

На одной машине иногда работают два кластера разных версий, например для тестовой и рабочей баз. Они отличаются портами (-port 1540 и -port 2540). Сопоставьте порт из строки процесса с тем, что указан в строке подключения к базе, и вы узнаете, какая версия обслуживает нужную базу.

Проверка через пакетный менеджер: dpkg, apt, rpm

Пакеты показывают, что установлено, даже если служба остановлена. Это второй по надёжности способ.

Debian, Ubuntu, Astra Linux

dpkg -l | grep -i 1c-enterprise

У новых версий имя пакета содержит номер: 1c-enterprise-8.3.24.1467-server, 1c-enterprise-8.3.24.1467-common. У старых пакет называется 1c-enterprise83-server, а версия стоит в отдельной колонке вывода.

Подробности по одному пакету:

dpkg -s 1c-enterprise83-server | grep -i '^Version'

РЕД ОС, ALT, CentOS, Rocky, openSUSE

rpm -qa | grep -i 1c
# с датой установки, свежие сверху
rpm -qa --last | grep -i 1c

Имена у rpm-пакетов похожие: старые — 1C_Enterprise83-server-8.3.xx-yyyy, новые — с номером версии внутри имени.

Как читать результат

Что видитеЧто это значит
Один набор пакетов server и commonСтоит одна версия, она же работает
Несколько наборов с разными номерамиВерсий несколько, работающую смотрите по процессу
Пакетов нет, но каталог /opt/1cv8 естьСтавили установщиком без регистрации в пакетной базе или копировали файлы вручную
Есть только client или thin-clientЭто не сервер 1С, а рабочее место

Наличие пакета server ещё не значит, что сервер запущен. Пакет мог остаться после неудачного обновления.

Журналы: systemd, история apt и dpkg

Журналы отвечают на два вопроса: какая версия запускалась и когда меняли платформу.

Журнал службы в systemd

Сначала найдите имя службы:

systemctl list-units --all | grep -i -E 'srv1cv8|1c'

На новых версиях юнит называется с номером внутри, например srv1cv8-8.3.24.1467@default.service. На старых — srv1cv83.service или скрипт /etc/init.d/srv1cv83.

Дальше смотрите журнал:

journalctl -u 'srv1cv8-*' --since "7 days ago" | tail -n 50

В записях запуска виден путь к ragent, а значит и версия. Если служба падала после обновления, здесь же будет причина.

История установки и обновлений

# Debian, Ubuntu
grep -i 1c-enterprise /var/log/dpkg.log
zgrep -i 1c-enterprise /var/log/dpkg.log.*.gz
grep -i -A3 1c-enterprise /var/log/apt/history.log

# РЕД ОС, Rocky, CentOS 8+
grep -i 1c /var/log/dnf.rpm.log

В dpkg.log строки вида install и upgrade содержат старую и новую версии пакета. Так удобно восстановить хронологию: когда стояла 8.3.22, когда перешли на 8.3.24.

Логи dpkg ротируются. Если обновляли давно, ищите в архивах .gz — команда zgrep выше как раз для них.

Каталог установки и файлы платформы

Если пакетного менеджера под рукой нет или файлы копировали вручную, смотрите прямо на диск.

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

Первый список — это готовый перечень установленных версий, по одной на каталог. Пример:

8.3.22.2239
8.3.24.1467

Какая из них «главная»

Сам по себе каталог ничего не говорит о том, какая версия запускается. Проверьте файл юнита:

systemctl cat 'srv1cv8-*@default.service' | grep -i -E 'ExecStart|Environment'

В строке ExecStart будет путь к ragent — версию видно по нему. На новых платформах файл юнита лежит прямо в каталоге версии и подключается командой systemctl link, поэтому у каждой версии он свой.

Старая схема с init.d

На серверах со старой схемой загляните в скрипт запуска и файл настроек службы:

grep -i -E 'SRV1CV8|/opt/1C' /etc/init.d/srv1cv83
cat /etc/sysconfig/srv1cv83 2>/dev/null
cat /etc/default/srv1cv83 2>/dev/null

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

Окружение процессов и утилита rac

Этот блок нужен, когда процесс запущен «не так, как вы думаете»: через свой скрипт, обёртку или в контейнере.

Переменные окружения процесса

sudo cat /proc/<PID>/environ | tr '\0' '\n' | grep -i -E 'SRV1CV8|PATH|LD_LIBRARY'
sudo cat /proc/<PID>/cmdline | tr '\0' ' '; echo

Здесь видно, с какими переменными и аргументами стартовал агент. Если LD_LIBRARY_PATH указывает на каталог другой версии, чем путь к ragent, это повод разобраться: такая смесь даёт трудноуловимые сбои.

Сервер в Docker

Если 1С крутится в контейнере, процессы на хосте видны, но пути внутри контейнера. Проверяйте изнутри:

docker ps
docker exec -it <контейнер> ls /opt/1cv8/x86_64/

Сервер администрирования ras и утилита rac

rac — консольный клиент администрирования. Он работает через службу ras (по умолчанию порт 1545), которая подключается к агенту кластера. Утилита лежит в том же каталоге, что и сервер.

# запуск ras, если он ещё не работает (от пользователя usr1cv8)
/opt/1cv8/x86_64/8.3.24.1467/ras cluster --daemon

# версия агента, к которому подключился ras
/opt/1cv8/x86_64/8.3.24.1467/rac agent version

# список кластеров и рабочих серверов
/opt/1cv8/x86_64/8.3.24.1467/rac cluster list

Команда rac agent version возвращает строку version : 8.3.24.1467. Если сервер с удалённой машины, укажите адрес: rac localhost:1545 agent version. Полный список режимов показывает rac help, параметры конкретного режима — rac help agent.

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

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

Когда версии не сходятся: ошибки и что с ними делать

Чаще всего версию сервера проверяют не из любопытства, а потому что клиент не может подключиться. Разберём типовые случаи.

Клиент и сервер разных версий

Платформа требует полного совпадения номера клиента и сервера, вплоть до последней группы цифр. Клиент 8.3.24.1342 к серверу 8.3.24.1467 не подключится. В сообщении об ошибке обычно указаны обе версии — по ним сразу понятно, что обновлять.

Варианты решения:

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

После обновления работает старая версия

Типичная история: поставили новую платформу, а клиенты по-прежнему видят старую. Причина — служба старой версии осталась включённой, а новая не запущена или не зарегистрирована.

  1. Найдите все юниты: systemctl list-units --all | grep srv1cv8.
  2. Убедитесь, что запущен юнит нужной версии, а старый остановлен и выключен из автозапуска (systemctl disable).
  3. Проверьте, что новый агент использует тот же каталог данных кластера (-d в строке запуска), иначе он стартует с пустым кластером без баз.

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

Не запускайте два агента разных версий на одном и том же порту 1540 и одном каталоге данных — второй либо не стартует, либо испортит настройки кластера.

Консоль администрирования не подключается

Консоль кластера на Windows тоже должна совпадать по версии с сервером. Если версии разные, подключение не установится. Поставьте на компьютер администратора компоненту администрирования той же версии или пользуйтесь rac прямо на сервере.

Нет прав на просмотр

Обычный пользователь не видит /proc/<PID>/environ и exe процессов usr1cv8. Выполняйте эти команды через sudo. Команды ps, ls и dpkg -l работают без повышения прав.

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

Можно ли узнать версию сервера 1С, не заходя на сервер?
Да, через rac agent version с другой машины, если на сервере запущен ras и открыт порт 1545. Ещё один косвенный признак — текст ошибки при подключении клиентом другой версии: в нём указаны обе версии.
Отличается ли версия сервера от версии конфигурации?
Да, это разные вещи. Версия сервера — это номер платформы 8.3.x.x. Версия конфигурации (например, релиз Бухгалтерии) хранится в самой базе и смотрится из клиента в окне «О программе».
Можно ли держать на одном сервере несколько версий платформы?
Можно. Каждая версия ставится в свой каталог /opt/1cv8/x86_64/<версия>/. Одновременно они работают только на разных портах и с разными каталогами данных кластера.
Нужно ли удалять старые версии после обновления?
Не сразу. Старую версию полезно оставить на время, чтобы быстро откатиться при проблемах. Когда новая отработала без сбоев, старые пакеты удаляют, чтобы не путаться и не занимать диск.
Почему dpkg показывает 8.3, но без полного номера?
У старых пакетов имя содержит только 83, а полный номер выводится в колонке Version. Посмотрите её через dpkg -s с именем пакета.