Какая платформа стоит на сервере 1С под Linux: команды для проверки
Содержание
Быстрее всего версию сервера 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.
Этот способ хорош тем, что проверяет версию «глазами сети»: именно её увидит клиент, который подключится к агенту.
ss -tlnp | grep 1545 и запустите ras из каталога той же версии, что и сервер.systemctl status по найденному юниту и журнал journalctl, затем пакеты — они покажут установленную версию./opt/1C/v8.3/ или в контейнер. Проверьте пакеты и docker ps.readlink -f /proc/<PID>/exe с юнитом systemd.Когда версии не сходятся: ошибки и что с ними делать
Чаще всего версию сервера проверяют не из любопытства, а потому что клиент не может подключиться. Разберём типовые случаи.
Клиент и сервер разных версий
Платформа требует полного совпадения номера клиента и сервера, вплоть до последней группы цифр. Клиент 8.3.24.1342 к серверу 8.3.24.1467 не подключится. В сообщении об ошибке обычно указаны обе версии — по ним сразу понятно, что обновлять.
Варианты решения:
- Установить на рабочее место клиент той же версии, что на сервере.
- Если версий клиента на компьютере несколько, выбрать нужную в настройках списка баз: в свойствах информационной базы на последнем шаге есть поле версии платформы для запуска.
- Настроить на сервере каталог дистрибутивов для автоматической загрузки тонкого клиента — тогда клиенты подтянут нужную версию сами.
После обновления работает старая версия
Типичная история: поставили новую платформу, а клиенты по-прежнему видят старую. Причина — служба старой версии осталась включённой, а новая не запущена или не зарегистрирована.
- Найдите все юниты:
systemctl list-units --all | grep srv1cv8. - Убедитесь, что запущен юнит нужной версии, а старый остановлен и выключен из автозапуска (
systemctl disable). - Проверьте, что новый агент использует тот же каталог данных кластера (
-dв строке запуска), иначе он стартует с пустым кластером без баз.
Остановка службы сервера 1С обрывает все сеансы пользователей и фоновые задания. Делайте это вне рабочего времени и заранее предупредите людей.
Не запускайте два агента разных версий на одном и том же порту 1540 и одном каталоге данных — второй либо не стартует, либо испортит настройки кластера.
Консоль администрирования не подключается
Консоль кластера на Windows тоже должна совпадать по версии с сервером. Если версии разные, подключение не установится. Поставьте на компьютер администратора компоненту администрирования той же версии или пользуйтесь rac прямо на сервере.
Нет прав на просмотр
Обычный пользователь не видит /proc/<PID>/environ и exe процессов usr1cv8. Выполняйте эти команды через sudo. Команды ps, ls и dpkg -l работают без повышения прав.
Частые вопросы
Можно ли узнать версию сервера 1С, не заходя на сервер?
rac agent version с другой машины, если на сервере запущен ras и открыт порт 1545. Ещё один косвенный признак — текст ошибки при подключении клиентом другой версии: в нём указаны обе версии.Отличается ли версия сервера от версии конфигурации?
Можно ли держать на одном сервере несколько версий платформы?
/opt/1cv8/x86_64/<версия>/. Одновременно они работают только на разных портах и с разными каталогами данных кластера.Нужно ли удалять старые версии после обновления?
Почему dpkg показывает 8.3, но без полного номера?
dpkg -s с именем пакета.