К статье
Практический материал

Администрирование · 10 мин

Как перезапустить службу 1С на Linux

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

Перезапуск службы сервера 1С на Linux — рутинная операция, которая требуется после обновления платформы, изменения параметров кластера, утечек памяти в рабочих процессах или зависания соединений с СУБД. В большинстве дистрибутивов сервер 1С работает как системная служба под управлением systemd, поэтому основной инструмент администратора — команда systemctl.

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

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

Как называется служба 1С и как её найти

При установке сервера 1С из пакетов вендора создаётся unit-файл systemd. Его имя зависит от версии платформы: для 8.3.22 это обычно srv1cv8-8.3.22.XXXX, для более ранних версий — srv1cv8-8.3.XX.XXXX или просто srv1cv8. Точное имя подскажет сама система.

Чтобы увидеть все службы, связанные с 1С, выполните:

systemctl list-units --type=service | grep -i 1c

systemctl list-unit-files | grep -i srv1c

Если сервер установлен вручную без пакетов (запуск скриптом или через rc.local), службы systemd может не быть — тогда агент запускается процессом ragent, и управлять им придётся через завершение процесса и повторный запуск. Такой способ считается устаревшим и усложняет сопровождение.

Стандартный перезапуск через systemctl

Базовый сценарий, подходящий для большинства ситуаций, выглядит так. Подставьте фактическое имя вашей службы вместо srv1cv8.

Порядок действий
  1. 1
    Узнайте имя службы: systemctl list-units | grep -i 1c
  2. 2
    Проверьте активные сеансы в консоли кластера или через rac session list
  3. 3
    Предупредите пользователей о перерыве в работе
  4. 4
    Выполните sudo systemctl restart srv1cv8
  5. 5
    Проверьте статус: systemctl status srv1cv8
  6. 6
    Убедитесь, что информационные базы доступны и сеансы подключаются

Команда restart последовательно выполняет остановку и запуск. Если нужно контролировать каждый этап отдельно, используйте пару команд:

sudo systemctl stop srv1cv8

sudo systemctl start srv1cv8

Между остановкой и запуском имеет смысл выдержать паузу в несколько секунд, чтобы рабочие процессы успели завершиться и освободить порты. Проверить, что процессы действительно завершились, можно командой ps aux | grep rphost — в выводе не должно остаться процессов платформы.

bash
sudo systemctl restart srv1cv8 && systemctl status srv1cv8 --no-pager

Подготовка: что сделать до перезапуска

Главный риск перезапуска — обрыв активных сеансов пользователей. Незавершённые транзакции откатятся, несохранённые данные в открытых формах будут потеряны, а в файлах журналов СУБД могут остаться записи о разорванных соединениях. Поэтому перезапуск в рабочее время без предупреждения — плохая практика.

Список активных сеансов можно получить через утилиту администрирования rac:

/opt/1cv8/x86_64/current/rac session list --cluster=ID_КЛАСТЕРА

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

Проверка результата после перезапуска

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

Контрольные точки

Как проверить результат

Статус службы
Норма

active (running) без ошибок в выводе

Тревожный признак

failed, activating или циклические перезапуски

Процессы платформы
Норма

Запущены ragent, rmngr и один или несколько rphost

Тревожный признак

Есть ragent, но нет рабочих процессов rphost

Порты кластера
Норма

Порты 1540-1541 и диапазон рабочих портов слушаются (ss -tlnp)

Тревожный признак

Порты не заняты или заняты сторонним процессом

Подключение клиента
Норма

Тестовый вход в информационную базу проходит

Тревожный признак

Ошибка соединения с сервером 1С

Журнал службы смотрят через journalctl — это первое место, где нужно искать причину проблем:

sudo journalctl -u srv1cv8 -n 100 --no-pager

sudo journalctl -u srv1cv8 -f

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

Если служба не запускается или падает

Типичная ситуация: после restart служба уходит в статус failed. Причины чаще всего сводятся к нескольким вариантам, которые проверяют последовательно.

Типичные ошибки
01
Перезапуск при зависшем rphost: процесс не завершается за отведённое время, systemd убивает его, но порт остаётся занятым — новый запуск падает. Решение: дождаться освобождения порта или завершить процесс вручную через kill
02
Повреждённый реестр кластера в srvinfo: служба стартует, но базы не видны. Решение: проверить файлы в каталоге srvinfo и восстановить из резервной копии
03
Нехватка прав у пользователя srv1cv8 на каталоги платформы после обновления. Решение: проверить владельца и права на каталоги установки и srvinfo
04
Несколько версий платформы на одном сервере: администратор перезапускает не ту службу и не видит эффекта. Решение: сверить имя unit-файла с фактически используемой версией

Если процесс rphost завис и не реагирует на штатную остановку, найдите его PID и завершите принудительно:

ps aux | grep rphost

sudo kill -9 PID_ПРОЦЕССА

Использовать kill -9 следует только после того, как штатная остановка не сработала: принудительное завершение не даёт процессу корректно закрыть соединения с СУБД. После этого перед запуском убедитесь, что порты освободились: ss -tlnp | grep 154.

Особые сценарии

Несколько версий платформы на одном сервере

Когда на сервере установлено несколько версий 8.3, каждая обычно имеет собственную службу. Перед перезапуском убедитесь, что вы работаете именно с той версией, на которой крутится рабочий кластер. Актуальную версию покажет вывод ps aux | grep ragent — в пути к исполняемому файлу будет номер версии.

Перезапуск без systemd

На старых системах с SysV init используется команда service srv1cv8 restart или скрипт в /etc/init.d. Если агент запущен вручную, его останавливают завершением процесса ragent, а запускают командой из каталога платформы с параметрами -daemon. Такой запуск стоит по возможности перевести на systemd — это упростит автозагрузку и мониторинг.

Кластер из нескольких серверов

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

Маршрут решения

Как выбрать действие

Служба работает, но пользователи жалуются на зависанияСначала найдите зависший rphost по потреблению памяти и CPU, попробуйте перезапустить только его через консоль кластера
Служба в статусе failed после restartСмотрите journalctl -u srv1cv8, проверяйте занятость портов и права на каталоги
Нужно применить новые параметры запускаОтредактируйте unit-файл, выполните systemctl daemon-reload и только потом restart
Перезапуск нужен регулярно для профилактикиНастройте таймер systemd на ночное время с предварительной проверкой активных сеансов

Изменение параметров запуска службы

Если перезапуск нужен для применения новых параметров (например, уровня отладки или пути к srvinfo), правьте unit-файл, а не запускайте агент вручную с другими ключами. Файл обычно находится в /etc/systemd/system/ или /usr/lib/systemd/system/.

После редактирования обязательно выполните sudo systemctl daemon-reload, иначе systemd продолжит использовать старую конфигурацию. Затем перезапустите службу и проверьте, что новые параметры применились: ps aux | grep ragent покажет фактические аргументы командной строки.

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

Чем перезапуск службы отличается от перезапуска кластера через консоль?

Консоль кластера позволяет перезапускать отдельные рабочие процессы и серверы кластера без остановки самой службы systemd. Перезапуск службы останавливает весь агент со всеми процессами — это более грубое воздействие. Для точечных проблем сначала пробуйте инструменты кластера.

Можно ли перезапускать службу, когда пользователи работают?

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

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

Проверьте, слушаются ли порты кластера (1540, 1541 и диапазон рабочих портов), не блокирует ли их файрвол, и видны ли информационные базы в реестре кластера. Также убедитесь, что имя сервера корректно разрешается в IP-адрес на клиентских машинах.

Как настроить автоматический перезапуск службы при сбое?

В unit-файле используются директивы Restart=on-failure и RestartSec. Однако для сервера 1С автоматический перезапуск не всегда желателен: повторяющиеся падения обычно означают системную проблему, которую нужно диагностировать, а не маскировать рестартами.

Нужно ли перезапускать службу после обновления платформы?

Да. Обновление заменяет исполняемые файлы, и работающие процессы продолжают использовать старую версию из памяти. Остановите службу, обновите пакеты, затем запустите службу новой версии. Убедитесь, что старая служба отключена, чтобы не было конфликта портов.

Что делать, если после перезапуска пропали информационные базы из списка?

Скорее всего, повреждён или не читается файл реестра кластера в каталоге srvinfo. Проверьте права доступа и целостность файлов, при наличии резервной копии srvinfo восстановите её. Базы можно также зарегистрировать заново через консоль кластера — сами данные в СУБД при этом не затрагиваются.

Итог

Что важно запомнить

Перезапуск службы 1С на Linux выполняется через systemctl restart с именем службы, соответствующим версии платформы. Перед перезапуском проверьте активные сеансы и регламентные задания, после — убедитесь в статусе active, наличии процессов rphost и доступности баз. При сбоях первым делом смотрите journalctl и занятость портов.