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

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

Как остановить сервер 1С на Linux

Пошаговая инструкция по остановке сервера 1С:Предприятие на Linux через systemctl и скрипты srv1cv8. Безопасные команды, проверка процессов и типичные ошибки.

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

Способ остановки зависит от того, как установлена платформа: как системная служба systemd, как скрипт init.d или как процесс, запущенный вручную. Ниже разобраны все варианты, включая проверку результата и действия при зависшем процессе.

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

Как определить, каким способом запущен сервер 1С

Перед остановкой важно понять, как именно запущен сервер 1С на вашей системе. От этого зависит правильная команда остановки. Самый надёжный способ — посмотреть, какие процессы сейчас работают.

Выполните команду ps aux | grep ragent. Процесс ragent — это агент сервера 1С:Предприятия, именно он слушает порт кластера (по умолчанию 1540). Дополнительно могут работать процессы rmngr (менеджер кластера) и rphost (рабочие процессы).

Далее проверьте, зарегистрирована ли служба в systemd: systemctl status srv1cv8. Если служба найдена и активна — используйте systemctl. Если systemd отвечает, что юнит не найден, проверьте наличие скрипта /etc/init.d/srv1cv8 — значит, платформа установлена в режиме классической службы init.

Если ни systemd, ни init-скрипта нет, но процесс ragent работает, сервер был запущен вручную из командной строки. Это частая ситуация на тестовых стендах. В таком случае останавливать нужно именно процесс, а не службу.

systemctl status srv1cv8 показывает activeСлужба управляется systemd

Останавливайте через systemctl stop

Есть файл /etc/init.d/srv1cv8Классическая init-служба

Используйте скрипт с параметром stop

Процесс ragent есть, служб нетРучной запуск

Завершайте процесс по PID

Остановка службы через systemctl

Это основной и рекомендуемый способ для современных дистрибутивов Linux (Debian, Ubuntu, CentOS, RHEL и их производных), когда платформа 1С установлена с регистрацией службы systemd. Имя юнита обычно содержит версию платформы, например srv1cv8-8.3.22-1750, либо обобщённое srv1cv8.

Чтобы узнать точное имя службы, выполните systemctl list-units | grep srv1cv8. Затем остановите службу командой sudo systemctl stop srv1cv8 или с полным именем юнита, если оно отличается.

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

Проверьте результат командой systemctl status srv1cv8 — статус должен быть inactive (dead). Дополнительно убедитесь, что процессы ragent, rmngr и rphost исчезли из списка ps aux | grep 1cv8.

bash
sudo systemctl stop srv1cv8
sudo systemctl status srv1cv8
ps aux | grep -E 'ragent|rmngr|rphost'

Остановка через скрипт init.d

На системах без systemd или при установке платформы в классическом режиме управление ведётся через скрипт /etc/init.d/srv1cv8. Синтаксис простой: sudo /etc/init.d/srv1cv8 stop или sudo service srv1cv8 stop.

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

Путь к скрипту может отличаться в зависимости от дистрибутива и версии установщика. Найти его можно командой ls /etc/init.d/ | grep srv или поиском по каталогам: find /etc -name "srv1cv8" 2>/dev/null.

Остановка процесса, запущенного вручную

Если сервер 1С запущен вручную командой ragent (например, на тестовом стенде), остановить его можно, отправив сигнал TERM конкретному процессу. Сначала узнайте PID: ps aux | grep ragent — номер процесса указан во второй колонке.

Затем выполните sudo kill <PID>. Сигнал TERM (15) просит процесс завершиться корректно: агент освободит порты и закроет файлы кластера. Это безопасный способ, эквивалентный штатной остановке службы.

Команду kill -9 (SIGKILL) применяйте только в крайнем случае — когда процесс не реагирует на обычный kill в течение нескольких минут. SIGKILL завершает процесс мгновенно, без сохранения служебных данных, что может привести к повреждению файлов реестра кластера в каталоге srvinfo.

Что сделать перед остановкой сервера

Корректная подготовка исключает потерю данных пользователей. Первый шаг — завершить активные сеансы. В консоли администрирования серверов 1С (или через конфигуратор в разделе «Активные пользователи») проверьте список сеансов и предупредите пользователей о предстоящей остановке.

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

Если остановка связана с обновлением платформы, сделайте резервную копию каталога srvinfo (обычно /home/usr1cv8/.1cv8 или путь, заданный при запуске агента). Там хранится реестр кластера — список баз, настройки и сеансовые данные.

Порядок действий перед остановкой
  1. 1
    Предупредите пользователей и установите блокировку сеансов
  2. 2
    Проверьте отсутствие активных регламентных заданий
  3. 3
    Сделайте копию каталога srvinfo при необходимости
  4. 4
    Определите способ запуска сервера (systemd, init, вручную)
  5. 5
    Выполните штатную остановку соответствующей командой
  6. 6
    Проверьте, что процессы ragent, rmngr, rphost завершены

Проверка результата и решение проблем

После остановки убедитесь, что сервер действительно остановлен. Команда ps aux | grep 1cv8 не должна показывать процессы ragent, rmngr и rphost. Дополнительно проверьте, что порт 1540 (и порты рабочих процессов из диапазона 1560–1591) больше не слушаются: ss -tlnp | grep 154.

Если процесс rphost остался висеть после остановки службы, это обычно означает, что рабочий процесс застрял на завершении долгой операции. Подождите 1–2 минуты, затем завершите его вручную через kill. Если и это не помогает — kill -9 как крайняя мера.

Ситуация, когда systemctl stop зависает надолго, чаще всего означает, что агент ждёт завершения активных соединений. Проверьте журнал службы командой journalctl -u srv1cv8 -n 50 — там видно, на каком этапе находится остановка.

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

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

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

systemctl показывает inactive (dead)

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

Статус active, failed или зависание на stopping

Процессы 1С
Норма

ragent, rmngr, rphost отсутствуют в ps aux

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

Процессы продолжают работать

Порт 1540
Норма

Порт не слушается (ss -tlnp пуст)

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

Порт занят — агент ещё работает

Типичные ошибки при остановке сервера 1С

Самая распространённая ошибка — перезагрузка или выключение сервера Linux без предварительной остановки службы 1С. Хотя systemd при выключении штатно завершает службы, при жёстком reset или отключении питания файлы кластера могут остаться в несогласованном состоянии, и после запуска придётся восстанавливать реестр.

Вторая частая ошибка — остановка только агента ragent с оставленными рабочими процессами rphost. Осиротевшие rphost продолжают занимать память и держать соединения с СУБД. Всегда проверяйте полный список процессов после остановки.

Третья ошибка — использование команды остановки для несуществующего имени службы. Администраторы копируют команды из инструкций, где указано имя srv1cv8, а в их системе юнит называется с номером версии. Всегда сначала проверяйте реальное имя через systemctl list-units | grep srv.

Типичные ошибки
01
kill -9 как обычный способ остановки — риск повреждения файлов кластера
02
Остановка без блокировки сеансов — пользователи теряют несохранённые данные
03
Неправильное имя службы — команда не срабатывает, сервер продолжает работать
04
Игнорирование зависших rphost — утечка памяти и блокировки в СУБД
Итог

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

Останавливайте сервер 1С штатно: systemctl stop srv1cv8 для systemd или скриптом init.d. Перед остановкой завершите сеансы и регламентные задания. После — проверьте отсутствие процессов ragent, rmngr и rphost. kill -9 применяйте только к зависшим процессам как последнюю меру.

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

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

Команда systemctl restart выполняет последовательно stop и start. Если нужно именно остановить сервер (например, для обслуживания), используйте stop — после него служба не запустится автоматически до явной команды start или перезагрузки системы (если включён автозапуск).

Как отключить автоматический запуск сервера 1С при загрузке Linux?

Выполните sudo systemctl disable srv1cv8. Служба перестанет стартовать при загрузке системы, но её по-прежнему можно запустить вручную командой start. Проверить текущий статус автозапуска можно командой systemctl is-enabled srv1cv8.

Что делать, если systemctl stop завис и не завершается?

Подождите несколько минут — агент может завершать активные соединения. Проверьте журнал: journalctl -u srv1cv8 -f. Если остановка не завершается более 5–10 минут, найдите PID процесса ragent и отправьте kill вручную. По истечении таймаута systemd сам завершит процесс принудительно.

Можно ли остановить сервер 1С удалённо?

Да, подключившись по SSH и выполнив те же команды. Также остановить кластер можно через консоль администрирования серверов 1С с другой машины, но сама служба операционной системы при этом не останавливается — завершается только работа кластера.

Повредит ли остановка сервера 1С базы данных на PostgreSQL или MS SQL?

Штатная остановка безопасна: рабочие процессы закрывают соединения с СУБД корректно. Риск возникает только при kill -9 во время выполнения транзакции — тогда СУБД откатит незавершённую транзакцию, что обычно не повреждает данные, но может оставить временные блокировки до таймаута.

Где находятся логи, чтобы понять, почему сервер не останавливается?

Основные источники: журнал systemd (journalctl -u srv1cv8), технологический журнал 1С в каталоге srvinfo (если он настроен) и системный журнал /var/log/syslog или /var/log/messages. Ищите ошибки на момент выполнения команды остановки.