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

Эта статья поможет разобраться, как корректно перезагрузить сервер на Linux — будь то плановое обслуживание, применение обновлений или устранение сбоев. Мы рассмотрим все сценарии: от простого рестарта отдельного рабочего процесса до полного перезапуска кластера с учетом особенностей systemd, supervisord и ручного управления. Особое внимание уделим типичным ошибкам, которые допускают администраторы, и способам их избежать.

1. Подготовка к перезапуску: что нужно проверить перед рестартом

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

  • 🔹 Активные сессии пользователей: используйте команду rac list sessions (для кластера ) или проверьте через консоль администрирования сервера. Если сессий много, предупредите пользователей заранее.
  • 🔹 Завершение фоновых задач: регламентные операции (например, обмен данными или расчет зарплаты) могут блокировать базу. Проверьте их статус в Журнале регистрации.
  • 🔹 Резервные копии: если перезапуск связан с обновлением ПО, убедитесь, что свежие бэкапы баз данных созданы. Для PostgreSQL это можно сделать командой pg_dump.
  • 🔹 Логи сервера: просмотрите последние записи в /var/log/1C/ или journalctl -u srv1cv83 (для systemd) на предмет ошибок.

Если сервер работает в кластере с несколькими менеджерами, убедитесь, что основной менеджер кластера не перегружается в одиночку — это может привести к разрыву связи между узлами. В таких случаях лучше использовать поэтапный рестарт или отказоустойчивые сценарии.

⚠️ Внимание: Если ваш сервер интегрирован с внешними системами (например, BI-аналитика, EDI или веб-сервисы), перезапуск может прервать обмен данными. Проверьте настройки повторных попыток соединения в этих системах.
📊 Какой дистрибутив Linux вы используете для сервера 1С?
Ubuntu
CentOS/RHEL
Debian
Astra Linux
Другой

2. Способы перезапуска сервера 1С в Linux

В зависимости от конфигурации системы и версий ПО, перезапуск можно выполнить несколькими способами. Рассмотрим каждый из них с примерами команд и нюансами.

2.1. Перезапуск через systemd (рекомендуемый метод)

Современные дистрибутивы Linux (начиная с Ubuntu 16.04, CentOS 7 и новее) используют systemd для управления службами. Для сервера 1С:Предприятие 8.3 обычно создаются следующие юниты:

  • srv1cv83 — основная служба сервера;
  • ragent — агент сервера (если установлен отдельно);
  • apache2/nginx — если используется веб-доступ.

Команды для управления:

# Перезапуск основной службы сервера 1С

sudo systemctl restart srv1cv83

Проверка статуса

sudo systemctl status srv1cv83

Остановка и запуск (если нужен полный рестарт)

sudo systemctl stop srv1cv83

sudo systemctl start srv1cv83

Если служба не перезапускается, проверьте логи:

journalctl -u srv1cv83 -n 50 --no-pager

2.2. Ручное управление процессами

В некоторых случаях (например, при отладке или если systemd не используется) может потребоваться ручное управление процессами. Для этого:

  1. Найдите PID процессов сервера:
    ps aux | grep 1cv8

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

    usr1cv8   1234  0.0  1.2 123456 7890 ?        Sl   10:00   0:05 /opt/1cv8/x86_64/8.3.20.1500/ragent
    

    usr1cv8 1235 0.3 5.1 567890 34567 ? Sl 10:00 1:20 /opt/1cv8/x86_64/8.3.20.1500/rmngr

  2. Завершите процессы:
    sudo kill -9 1234 1235
    ⚠️ Внимание: Использование kill -9 может привести к потере данных, если процессы не успеют корректно завершить транзакции. По возможности используйте kill -15 (мягкое завершение).
  3. Запустите сервер заново:
    sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.20.1500/ragent --daemon
    

    sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.20.1500/rmngr --daemon

Проверен список процессов 1С

Созданы резервные копии баз

Предупреждены пользователи о простое

Готовы команды для запуска после остановки-->

2.3. Перезапуск через supervisord

Если сервер управляется через supervisord (что актуально для некоторых конфигураций с высокой нагрузкой), используйте:

# Перезапуск всех процессов 1С

sudo supervisorctl restart 1c:*

Проверка статуса

sudo supervisorctl status

Конфигурационный файл supervisord для обычно находится в /etc/supervisor/conf.d/1c.conf. Пример содержимого:

[program:1c_ragent]

command=/opt/1cv8/x86_64/8.3.20.1500/ragent --daemon

user=usr1cv8

autostart=true

autorestart=true

stderr_logfile=/var/log/1c/ragent.err.log

stdout_logfile=/var/log/1c/ragent.out.log

3. Перезапуск кластера серверов 1С

Если ваш сервер работает в кластерной конфигурации (несколько рабочих процессов, менеджеров или резервных узлов), простого рестарта службы недостаточно. Необходимо учитывать:

  • 🔄 Порядок перезапуска узлов: сначала резервные, затем основные.
  • 🔗 Синхронизацию данных между узлами (актуально для PostgreSQL с репликацией).
  • 🛡️ Отказоустойчивость: если используется Keepalived или Corosync, перезапуск должен учитывать переключение VIP.

Пример пошагового перезапуска кластера из 2 узлов:

  1. Остановите рабочие процессы на резервном узле:
    sudo systemctl stop srv1cv83@worker1
  2. Дождитесь, пока активные сессии переключатся на основной узел (проверяйте через rac cluster list).
  3. Остановите рабочие процессы на основном узле:
    sudo systemctl stop srv1cv83@worker2
  4. Перезапустите менеджер кластера на основном узле:
    sudo systemctl restart srv1cv83@rmngr
  5. Запустите рабочие процессы в обратном порядке (сначала основной узел, затем резервный).

Для проверки состояния кластера используйте:

rac cluster list

rac cluster healthcheck

Что делать если кластер не синхронизируется после перезапуска?

Если после перезапуска узлы кластера не видят друг друга, проверьте:

1. Сетевые подключения между узлами (ping, telnet на порты 1540-1541, 1560-1591).

2. Настройки файрвола (iptables/nftables) — порты должны быть открыты.

3. Конфигурацию кластера в файле /var/1C/clusters/{имя_кластера}/cluster.conf.

4. Логи синхронизации в /var/log/1C/cluster.log.

Если проблема сохраняется, может потребоваться ручная синхронизация через утилиту rac cluster sync.

4. Типичные ошибки и их решения

Даже опытные администраторы сталкиваются с проблемами при перезапуске сервера на Linux. Рассмотрим самые распространенные ошибки и способы их устранения.

Ошибка Возможная причина Решение
Failed to restart srv1cv83.service: Unit not found Служба не установлена или неправильное имя юнита Проверьте имя службы через systemctl list-units | grep 1cv8. Возможно, используется другое имя (например, srv1cv8 без версии).
Address already in use при запуске rmngr Порт занято другим процессом (часто — "зомби"-процессом 1С) Найдите и завершите процесс: sudo lsof -i :1541, затем kill -9 PID.
Сервер запускается, но базы недоступны Не запущен PostgreSQL или повреждены файлы баз Проверьте статус postgresql и целостность кластера БД: sudo -u postgres pg_ctl status.
Permission denied при запуске ragent Неправильные права на каталоги или файлы конфигурации Выполните: sudo chown -R usr1cv8:grp1cv8 /opt/1cv8 /var/1C.

Если после перезапуска сервер не отвечает, но процессы запущены, проверьте:

  • 🔌 Порты: утилитой netstat -tulnp | grep 1cv8 (должны быть открыты 1540-1541, 1560-1591).
  • 📂 Конфигурационные файлы: путь к ним может измениться после обновления. Проверьте символические ссылки в /etc/1C.
  • 🔄 Версию платформы: после обновления может потребоваться пересоздание информационных баз (chdbfl).
usr1cv8 soft nofile 65536

usr1cv8 hard nofile 65536

Затем перезагрузите систему или выполните ulimit -n 65536 перед запуском сервера.-->

5. Автоматизация перезапуска: cron и скрипты

Для планового перезапуска (например, еженедельно для освобождения памяти) можно использовать cron или системные таймеры systemd. Пример настройки:

Создайте скрипт /usr/local/bin/restart_1c.sh:

#!/bin/bash

Логирование

echo "$(date) — Начало перезапуска 1С" >> /var/log/1c/restart.log

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

SESSIONS=$(rac list sessions | wc -l)

if [ "$SESSIONS" -gt 2 ]; then

echo "$(date) — Обнаружены активные сессии ($SESSIONS). Перезапуск отменен." >> /var/log/1c/restart.log

exit 1

fi

Перезапуск

systemctl restart srv1cv83

echo "$(date) — Сервер 1С перезапущен" >> /var/log/1c/restart.log

Настройте права и добавьте в cron:

sudo chmod +x /usr/local/bin/restart_1c.sh

sudo crontab -e

Добавьте строку для запуска по расписанию (например, каждый понедельник в 3:00):

0 3   1 /usr/local/bin/restart_1c.sh

Для systemd-таймера создайте:

  1. Сервисный файл /etc/systemd/system/restart_1c.service:
    [Unit]
    

    Description=Restart 1C Server

    [Service]

    Type=oneshot

    ExecStart=/usr/local/bin/restart_1c.sh

  2. Таймер /etc/systemd/system/restart_1c.timer:
    [Unit]
    

    Description=Weekly restart of 1C Server

    [Timer]

    OnCalendar=Mon --* 03:00:00

    Persistent=true

    [Install]

    WantedBy=timers.target

  3. Активируйте таймер:
    sudo systemctl enable --now restart_1c.timer
⚠️ Внимание: Автоматический перезапуск может прервать длительные операции (например, выгрузку данных или регламентные задачи). Всегда настраивайте проверку активных сессий перед рестартом, как в примере выше.

6. Перезапуск после обновления платформы 1С

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

  1. Скачайте новую версию платформы с сайта и распакуйте в /opt/1cv8/ (например, /opt/1cv8/8.3.22.1800/).
  2. Остановите сервер:
    sudo systemctl stop srv1cv83
  3. Обновите символические ссылки:
    sudo ln -sfn /opt/1cv8/8.3.22.1800 /opt/1cv8/current
  4. Обновите конфигурацию кластера (если изменилась структура):
    sudo /opt/1cv8/current/rac cluster update --cluster=ИмяКластера
  5. Запустите сервер:
    sudo systemctl start srv1cv83
  6. Проверьте версию:
    /opt/1cv8/current/rac about

После обновления может потребоваться:

  • 🔄 Пересоздание информационных баз (через chdbfl или консоль администрирования).
  • 📋 Обновление конфигураций баз данных (если изменилась структура метаданных).
  • 🔧 Настройка новых параметров в файле srvinfo (например, для поддержки новых протоколов обмена).

Если после обновления сервер не запускается, проверьте:

  • Совместимость версии платформы с версией PostgreSQL (например, 1С 8.3.20 требует PostgreSQL 12+).
  • Наличие обновленных библиотек (например, libnss3 для работы с TLS 1.3).
💡

После обновления платформы 1С всегда проверяйте совместимость с версией СУБД и клиентскими приложениями. Несовпадение версий может привести к ошибкам подключения или повреждению данных.

7. Мониторинг и логирование после перезапуска

После перезапуска сервера критически важно убедиться, что все компоненты работают корректно. Вот что нужно проверить:

7.1. Проверка статуса служб

Используйте команды:

# Статус основной службы

systemctl status srv1cv83

Проверка портов

ss -tulnp | grep 1cv8

Статус кластера

/opt/1cv8/current/rac cluster list

7.2. Анализ логов

Основные файлы логов:

  • /var/log/1C/srv1cv83.log — общие логи сервера;
  • /var/log/1C/ragent.log — логи агента;
  • /var/log/1C/cluster.log — логи кластера (если используется);
  • journalctl -u srv1cv83 — системные логи (для systemd).

Примеры команд для анализа:

# Поиск ошибок за последние 30 минут

grep -i error /var/log/1C/*.log | tail -n 20

Мониторинг загрузки процессора и памяти

top -p $(pgrep -d',' -f 1cv8)

7.3. Тестирование подключения

Проверьте доступность сервера:

  • 🖥️ Локально: /opt/1cv8/current/rac list;
  • 🌐 Удаленно: подключитесь через 1С:Предприятие или веб-клиент;
  • 🔌 Порты: telnet localhost 1541 (должен отвечать).

Если сервер не отвечает, но процессы запущены, проверьте:

  • Настройки firewall (sudo ufw status или iptables -L);
  • Права на каталоги /var/1C и /opt/1cv8;
  • Наличие свободного места на диске (df -h).

FAQ: Частые вопросы по перезапуску сервера 1С в Linux

Можно ли перезапустить сервер 1С без остановки рабочих процессов?

Да, но с оговорками. Вы можете перезапустить отдельные рабочие процессы (srv1cv83@worker*) без остановки менеджера кластера (rmngr). Однако это не гарантирует освобождение всех ресурсов и может привести к нестабильной работе, если в процессах были критические ошибки. Для полного сброса состояния лучше перезапускать весь кластер.

Как перезапустить сервер 1С, если забыт пароль пользователя usr1cv8?

Если у вас есть права sudo, вы можете сбросить пароль пользователя usr1cv8 командой:

sudo passwd usr1cv8

Если прав sudo нет, потребуется доступ к физической консоли сервера или через IPMI/KVM для сброса пароля рута.

Что делать, если после перезапуска сервер 1С не виден в списке кластеров?

Это может происходить по нескольким причинам:

  1. Не запущен менеджер кластера (rmngr). Проверьте статус: systemctl status srv1cv83@rmngr.
  2. Поврежден файл конфигурации кластера в /var/1C/clusters/. Попробуйте восстановить его из резервной копии.
  3. Изменился сетевой интерфейс или IP-адрес сервера. Проверьте настройки в /etc/hosts и файрволе.

Если проблема сохраняется, попробуйте пересоздать кластер:

sudo /opt/1cv8/current/rac cluster delete --cluster=ИмяКластера

sudo /opt/1cv8/current/rac cluster create --cluster=ИмяКластера --port=1541 --range=1560:1591

Как автоматически перезапускать сервер 1С при падении?

Для автоматического перезапуска при сбоях можно использовать:

  • systemd: настройте Restart=always в юнитах (пример в разделе /etc/systemd/system/srv1cv83.service.d/override.conf).
  • supervisord: добавьте параметр autorestart=true в конфигурацию программы.
  • Скрипт мониторинга: напишите скрипт, который проверяет статус сервера и перезапускает его при необходимости (например, через cron каждые 5 минут).

Пример для systemd:

sudo mkdir -p /etc/systemd/system/srv1cv83.service.d

echo "[Service]

Restart=always

RestartSec=30" | sudo tee /etc/systemd/system/srv1cv83.service.d/override.conf

sudo systemctl daemon-reload

Нужно ли перезапускать PostgreSQL при перезапуске сервера 1С?

Как правило, нет. Сервер и PostgreSQL взаимодействуют через сетевое соединение, и перезапуск одного не требует остановки другого. Однако если вы обновляете обе системы (например, при переходе на новую версию PostgreSQL), то:

  1. Остановите сервер .
  2. Обновите и перезапустите PostgreSQL.
  3. Запустите сервер .

Если PostgreSQL работает в режиме репликации, перезапуск мастер-узла может потребовать ручной синхронизации реплик.