Администрирование · 11 мин
Как остановить службу 1С в Linux
Как корректно остановить службу сервера 1С в Linux: команды systemctl, остановка кластера, проверка процессов ragent и rphost, типичные ошибки и FAQ.
Остановка службы сервера 1С:Предприятие в Linux — типовая задача администрирования, которая встречается при обновлении платформы, изменении параметров кластера, обслуживании СУБД или перезагрузке сервера. Сделать это правильно важно: резкое завершение процессов без корректной остановки может привести к обрыву сеансов пользователей, незавершённым транзакциям и повреждению данных в информационных базах.
На большинстве современных дистрибутивов (Debian, Ubuntu, RHEL, CentOS, Astra Linux) сервер 1С работает как системная служба под управлением systemd, и основной инструмент остановки — команда systemctl. Однако в зависимости от версии платформы и способа установки имя службы и порядок действий могут отличаться. Ниже разобраны все основные сценарии: от простой остановки через systemd до ручного завершения процессов, если служба зависла.
Обратите внимание: остановка службы сервера 1С — это не то же самое, что остановка СУБД (PostgreSQL, MS SQL) или веб-сервера (Apache, nginx), через который публикуются базы. Если базы работают в файловом режиме и раздаются по сети без агента сервера, процедура будет другой. Сначала определите, какой именно компонент требуется остановить.
Определите, какая служба 1С запущена на сервере
Прежде чем останавливать что-либо, выясните точное имя службы. Платформа 1С:Предприятие при установке на Linux регистрирует службу с именем вида srv1cv8-8.3.22.1750, где цифры — номер версии платформы. Если на сервере устанавливалось несколько версий, служб может быть несколько, и останавливать нужно ту, которая обслуживает рабочий кластер.
Посмотреть список служб 1С можно командой:
systemctl list-units --type=service | grep srv1cv8Альтернативный способ — проверить запущенные процессы платформы. Агент сервера 1С работает как процесс ragent, менеджер кластера — rmngr, рабочие процессы — rphost. Команда ps aux | grep -E 'ragent|rmngr|rphost' покажет, какие процессы активны и из какого каталога установки они запущены. По пути к исполняемому файлу легко определить версию платформы.
Если в выводе systemctl служба не найдена, а процессы ragent присутствуют — вероятно, сервер 1С запущен вручную из консоли или через сторонний скрипт. В этом случае systemctl stop не сработает, и останавливать процессы придётся иначе (об этом ниже).
Останавливайте через systemctl stop
Завершайте процессы через kill или скрипт запуска
Определите рабочую версию по процессам и портам
Завершите сеансы пользователей перед остановкой
Остановка службы немедленно разрывает все соединения пользователей с информационными базами. Если в этот момент выполнялись проведение документов, обмены данными, регламентные задания или закрытие периода, транзакции оборвутся. В клиент-серверном режиме СУБД обычно откатит незавершённые транзакции, но прерывание длительных операций всё равно нежелательно: возможны блокировки, зависшие фоновые задания и ошибки при следующем запуске.
Правильная последовательность — сначала уведомить пользователей и дождаться выхода, затем заблокировать новые соединения и только потом останавливать службу. Управлять сеансами можно через консоль кластера (на Windows-машине администратора) или через утилиту администрирования rac, которая входит в состав платформы и работает в Linux.
Посмотреть активные сеансы через rac можно так: сначала получить список кластеров командой rac cluster list, затем запросить сеансы — rac session list --cluster=<ID кластера>. Для принудительного завершения конкретного сеанса используется rac session terminate с указанием идентификатора сеанса. Также полезно установить блокировку соединений с базами, чтобы пользователи не входили заново, пока идут работы.
Остановите службу через systemctl
Штатный и самый безопасный способ остановки — команда systemctl stop с именем службы. Для выполнения потребуются права root или sudo:
sudo systemctl stop srv1cv8-8.3.22.1750Команда отправляет процессу агента сигнал корректного завершения: агент останавливает менеджер кластера и рабочие процессы rphost, закрывает соединения и освобождает порты. Обычно остановка занимает от нескольких секунд до пары минут — в зависимости от нагрузки и количества активных соединений на момент остановки.
- 1Уведомьте пользователей и дождитесь завершения их работы
- 2Проверьте активные сеансы и задания: rac session list
- 3Установите блокировку соединений с базами при необходимости
- 4Выполните sudo systemctl stop srv1cv8-XX.YY
- 5Проверьте результат: systemctl status и список процессов
Если нужно не просто остановить, а перезапустить службу (например, после изменения параметров запуска), используйте sudo systemctl restart srv1cv8-XX.YY. Для применения изменений в unit-файле службы перед рестартом выполните sudo systemctl daemon-reload.
Проверьте, что служба действительно остановлена
Отсутствие ошибок в выводе systemctl stop не всегда означает полную остановку. Иногда процесс зависает на этапе завершения, и systemd ждёт таймаута, прежде чем завершить его принудительно. Проверка результата — обязательный шаг.
Выполните systemctl status srv1cv8-XX.YY. Корректное состояние после остановки — Active: inactive (dead). Если статус показывает deactivating дольше пары минут или failed, служба завершилась с проблемой. Дополнительно убедитесь, что процессы платформы исчезли: ps aux | grep -E 'ragent|rmngr|rphost' не должна возвращать рабочие процессы (строка самого grep не в счёт).
Полезно проверить и освобождение портов. По умолчанию агент сервера 1С слушает порт 1540, менеджер кластера — 1541, рабочие процессы — диапазон 1560–1591. Команда ss -tlnp | grep -E '1540|1541|156' после остановки не должна показывать занятые порты, если на сервере нет другого работающего кластера.
Как проверить результат
Active: inactive (dead)
Active: failed, deactivating или active
Процессов нет в выводе ps
Процессы остались и не завершаются
Порты свободны
Порты заняты процессом платформы
Что делать, если служба зависла или не останавливается
Ситуация, когда systemctl stop «висит» или завершается ошибкой, обычно связана с зависшим рабочим процессом rphost — например, из-за бесконечного запроса, проблем с СУБД или нехватки памяти. В этом случае systemd по истечении таймаута сам завершит процессы сигналом SIGKILL, но можно действовать и вручную.
Сначала попробуйте мягкое завершение конкретных процессов: sudo kill <PID> отправляет сигнал SIGTERM, при котором процесс штатно освобождает ресурсы. Если через 30–60 секунд процесс не завершился, применяйте принудительное завершение: sudo kill -9 <PID>. Идентификаторы процессов смотрите в выводе ps aux | grep rphost.
Учтите риск: kill -9 не даёт процессу корректно закрыть соединения с СУБД и файлы. Это допустимо как крайняя мера, когда служба уже не отвечает, но после такого завершения проверьте журналы кластера и состояние баз. Технологический журнал и логи СУБД помогут понять, что стало причиной зависания — иначе ситуация повторится.
Особые сценарии: ручной запуск, автозагрузка и связанные службы
Сервер 1С запущен вручную, а не как служба
Если агент стартовал командой из консоли (например, /opt/1cv8/x86_64/8.3.22.1750/ragent -daemon), systemctl его не увидит. Останавливайте процесс напрямую: найдите PID агента через ps и завершите его сначала SIGTERM, при необходимости — SIGKILL. Заодно проверьте, не прописан ли запуск в rc.local, cron или пользовательских скриптах, чтобы сервер не стартовал снова после перезагрузки.
Отключение автозапуска службы
Если службу нужно не только остановить, но и исключить из автозагрузки (например, при выводе сервера из эксплуатации), выполните sudo systemctl disable srv1cv8-XX.YY. Команда не останавливает работающую службу — только убирает её из автозапуска. Для одновременной остановки и отключения используйте sudo systemctl disable --now srv1cv8-XX.YY.
Связанные компоненты
Остановка агента сервера 1С не затрагивает СУБД и веб-сервер. Если обслуживание требует полной остановки инфраструктуры, останавливайте компоненты в порядке: служба 1С → веб-сервер (apache2/nginx) → СУБД (postgresql). Запуск — в обратном порядке. Нарушение последовательности не критично, но остановка СУБД раньше платформы гарантированно оборвёт активные транзакции.
Как выбрать действие
FAQ
Как узнать точное имя службы 1С, если я не знаю версию платформы?
Выполните команду systemctl list-units --type=service --all | grep srv1cv8 — она покажет все зарегистрированные службы платформы, включая остановленные. Если служб несколько, определить рабочую поможет сопоставление с запущенными процессами: ps aux | grep ragent покажет путь к каталогу установки с номером версии.
Чем остановка службы отличается от перезапуска?
Команда systemctl restart выполняет остановку и немедленный запуск подряд — это удобно после изменения настроек. Команда stop только останавливает службу, и она останется выключенной до ручного запуска или перезагрузки сервера (если включён автозапуск). Для обслуживания с длительным простоем используйте stop, для применения настроек — restart.
Можно ли остановить службу 1С без прав root?
Нет, управление системными службами через systemctl требует привилегий root или настроенного sudo. Обычный пользователь может только просматривать статус службы. Если агент запущен вручную от имени конкретного пользователя, этот пользователь может завершить собственный процесс через kill без sudo.
Что произойдёт с файловыми базами при остановке службы сервера 1С?
Если базы работают в клиент-серверном режиме через агент, остановка службы разорвёт все соединения. Если базы файловые и пользователи подключаются к ним напрямую по сети (без агента сервера), остановка службы srv1cv8 на них никак не повлияет — такие сеансы нужно завершать на стороне клиентов.
Служба остановилась с ошибкой failed — что проверить в первую очередь?
Посмотрите журнал службы: journalctl -u srv1cv8-XX.YY -n 50 покажет последние сообщения. Частые причины — зависший рабочий процесс, недоступность СУБД на момент завершения, проблемы с правами на каталоги служебных данных кластера. После разбора причины выполните systemctl reset-failed, чтобы сбросить состояние ошибки.
Нужно ли останавливать службу 1С перед перезагрузкой сервера?
Явно останавливать не обязательно: systemd при штатной перезагрузке сам корректно завершит службу. Но если на сервере выполняются длительные задания, лучше заранее завершить сеансы и остановить службу вручную — так вы контролируете процесс и исключаете обрыв регламентных операций по таймауту systemd.
Что важно запомнить
Останавливайте службу 1С через systemctl stop с точным именем службы, предварительно завершив сеансы пользователей. После остановки проверяйте статус, процессы и порты. При зависании сначала используйте SIGTERM и только потом kill -9. Для вывода сервера из эксплуатации дополнительно отключите автозапуск через systemctl disable.