Рестарт сервера 1С с очисткой сеансовых данных на Linux посредством systemd

12.09.23

Администрирование - Linux

Сказ о том, как сделать "кошерный" перезапуск сервера 1С, работающего на платформе GNU/Linux, с очисткой сеансовых данных посредством systemd

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
snccntx_reset.tgz
.tgz 0,70Kb
2 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

В среде 1С можно часто услышать рецепт: "перезапустить сервер 1С с очисткой сеансовых данных" или "перезапустить сервер 1С с чисткой серверного кэша"

Про сеансовые данные сервера 1С можно почитать, например, на ИТС

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

Однако я не являюсь приверженцем идеи "в любой непонятной ситуации чистить кэш сервера 1С", поэтому не буду ни кого ни за что агитировать, или что-то советовать в этом контексте, а всего лишь поведаю о способе реализации механизма очистки сеансовых данных сервера 1С посредством systemd

О том, как мы на своих проектах управляем сервером 1С посредством systemd можно почитать в статье Запуск нескольких экземпляров сервера 1С на GNU/Linux посредством systemd

Дальнейшее повествование будет отталкиваться именно от файла сервиса, описанного в приведенной выше статье, но в целом может быть "пристроено" и к файлу сервиса, распространяемому в составе дистрибутива платформы (см. ИТС)

Вспомогательный скрипт

Для реализации механизма очистки сеансовых данных нам потребуется вспомогательный скрипт следующего содержания

#!/bin/bash

function make_snccntx_reset_conf {
   cat <<EOF > "/etc/systemd/system/srv1cv83@${1}.service.d/snccntx_reset.conf"
[Service]
ExecStopPost=/bin/find \${SRV1CV8_DATA} -maxdepth 3 -regex "\${SRV1CV8_DATA}.*snccntx.*" -name "*.dat" -delete
EOF
}

case ${1} in
on) make_snccntx_reset_conf "${2}" ;;&
off) rm -f "/etc/systemd/system/srv1cv83@${2}.service.d/snccntx_reset.conf" ;;&
on|off) systemctl daemon-reload;;
*) echo "ОШИБКА: Неизвестный режим работы!"; exit 1;;
esac

Которому следует дать имя snccntx_restet.sh, поместить в каталог /usr/local/sbin/ и дать права на выполнение!

$ sudo cp ~/snccntx_reset.sh /usr/local/sbin
$ sudo chmod +x /usr/local/sbin/snccntx_reset.sh

Данный скрипт добавляет, или удаляет у указанного в параметрах вызова сервиса сервера 1С файл настроек, отвечающий за поиск и удаление сеансовых данных в каталоге сервера 1С, после чего выполняет перечитывание настроек systemd

Дополнительный сервис и таймер systemd

Так же необходимо создать файл дополнительного сервиса restart_srv1cv83@.service нижеследующего содержания, который следует поместить в  каталог /etc/systemd/system

[Unit]
Description=Restart srv1cv83@%i service with session data reset

[Service]
Type=oneshot
ExecStartPre=-/usr/local/sbin/snccntx_reset.sh on %i
ExecStart=/usr/bin/systemctl try-restart srv1cv83@%i.service
ExecStartPost=-/usr/local/sbin/snccntx_reset.sh off %i

Вместе с тем следует создать файл таймера restart_srv1cv83@.timer, который так же необходимо поместить в каталог /etc/systemd/system

[Unit]
Description=Daily srv1cv83@%i restart

[Timer]
OnCalendar=*-*-* 05:00:05

[Install]
WantedBy=timers.target

Как все это работает?

Для ручного перезапуска сервера 1С с очисткой сеансовых данных вам необходимо будет выполнить команду (для случая если вы управляете сервисом сервера 1С посредством сервиса srv1cv83@default.service)

$ sudo systemctl start restart_srv1cv83@default

В случае когда вам требуется регулярный перезапуск, вам необходимо активировать таймер (в текущем варианте он будет запускаться каждый день в 05:00:05, если вам требуется иное время, вы можете внести необходимые изменения). Активация/запуск таймера можно выполнить командой (так же для сервера 1С, управляемого сервисом srv1cv83@default.service)

$ sudo systemctl enable --now restart_srv1cv83@default.timer

Проверить что таймер действительно включился можно командой

$ sudo systemctl list-timers
NEXT                         LEFT     LAST                         PASSED  UNIT
Tue 2023-09-12 05:00:05 MSK  23h left n/a                          n/a     restart_srv1cv83@default.timer restart_srv1cv83@default.service

В выводе указанной команды должен присутствовать наш таймер restart_srv1cv83@default.timer с информацией о дате и времени следующего и последнего запуска

Зачем все так сложно!?

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

  1. Хотелось сохранить выбранную концепцию мультисервисности, предлагаемую systemd
  2. Мы сохраняем без изменений оригинальный сервис, который можно с легкостью перезапускать без очистки сеансовых данных (читай, без принудительного завершения пользовательских сеансов). Если у вас нет нужды в таком сценарии, то можно файл конфигурации, создаваемый скриптом, поместить в файл дополнительных настроек мультисервиса srv1cv83@.service (или в файл дополнительных настроек конкретного сервиса, например srv1cv83@default.service) "на постоянной основе". При этом вы избавитесь от необходимости вспомогательного скрипта. Способ задания таких настроек приведен в предыдущей статье, на пример, как это делается для портов сервера 1С
  3. Зачем вообще нужен вспомогательный скрипт, если можно было бы поместить все эти команды в файл сервиса restart_srv1cv83@.service!? Основная причина - это необходимость выполнения команды systemctl daemon-reload, которую не получиться вызвать непосредственно из файла сервиса systemd

Надеюсь изложенная информация будет полезна коллегам!

Вступайте в нашу телеграмм-группу Инфостарт

сервер 1с сеансовые данные перезапуск linux systemd

См. также

Linux Системный администратор 1С:Предприятие 8 Бесплатно (free)

Скрипт bash для корректного обновления серверной части платформы 1С Предприятия (сохраняет и восстанавливает настройки служб, даже если их несколько, изменяет версию платформы во всех веб-публикациях и делает еще много полезных мелочей не включенных в штатный инсталлятор) Иными словами "обновление под ключ" или "нажал и забыл"

21.10.2026    372    capitan    0    

5

DevOps и автоматизация разработки Linux Разработчик 1С 8.3 Абонемент ($m)

Исследуем, почему COPY и последующий rm оставляют установщик в слоях Docker. На Docker Engine 29.8.0 сравнила три сборки с фиктивным дистрибутивом: bind mount и отдельный завершающий этап исключили его слой. В статье — первичные размеры и границы проверки лицензирования 1С; в архиве — воспроизводитель и анализатор inspect/history.

1 стартмани

12.10.2026    346    Ninel_S    0    

1

Linux Разработчик 1С 8.3 Россия Бесплатно (free)

Пошагово показываю, как на сервере 1С 8.3 под Linux получить PNG QR через HTTPСоединение без COM, сохранить ответ во временный файл или двоичные данные и вывести картинку на форме через временное хранилище. Разбираю замену XMLHTTP, кодирование текста, HTTPS и типичные ошибки «сервер недоступен».

06.10.2026    372    rusla95oreh    0    

1

Linux Системный администратор Разработчик 1С 8.3 1С 8.5 Бесплатно (free)

Как запускать клиентские приложения 1С:Предприятие 8.3 на хосте Linux (KDE Plasma, Wayland или другое окружение) в rootless podman-контейнере, ничего не устанавливая в систему хоста.

05.10.2026    490    speshuric    0    

4

Инструменты администратора БД Администрирование СУБД Linux Системный администратор Разработчик Руководитель проекта Стажер 1С 8.3 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Предприятие 8. Транспортная логистика, экспедирование и управление автотранспортом КОРП 1С:КА Беларусь Россия Казахстан Абонемент ($m)

Пятый выпуск нашего открытого инженерного сериала по построению отказоустойчивой инфраструктуры 1С на Linux! В этой части мы спускаемся на уровень операционной системы и выполняем обещание, данное в Roadmap предыдущей статьи - разбираем физику подсистемы виртуальной памяти Linux, ликвидируем скрытые I/O-тормоза и публикуем новый прикладной инструмент для системных администраторов и DBA.

10 стартмани

16.09.2026    1340    Ninel_S    0    

2

DevOps и автоматизация разработки Linux HighLoad оптимизация Групповая разработка (Git, хранилище) Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Беларусь Россия Казахстан Абонемент ($m)

Системный анализ архитектурных границ масштабирования учетных систем «1С:Предприятие 8.3» под управлением PostgreSQL в ОС Linux. Формулирование инженерной методологии сквозного проекта «Торговый контур», определение измеримых целевых показателей (p95, MTTR, APDEX) и стратегии поэтапной модернизации эксплуатационного контура без остановки промышленных учетных процессов.

1 стартмани

07.09.2026    1646    Ninel_S    10    

2

Linux Групповая разработка (Git, хранилище) Администрирование СУБД Системный администратор Разработчик 1С 8.3 Абонемент ($m)

Декларативный pipeline в GitHub Actions, тонкости лицензирования в Docker (--net=host), изоляция RUN_ID и интеграция со сборочным конвейером SRE-Suite-for-1C-platform. Вторая часть практического руководства (https://infostart.ru/public/2779597): от первого коммита до детерминированного синтаксического гейта на headless-раннере Linux

1 стартмани

03.09.2026    2060    Ninel_S    0    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nvv1970 14.09.23 09:09 Сейчас в теме
Убил бы за очистку по таймеру.
Особенно на серверах разработки.

Все сеансы умрут без возможности восстановления.
Между тем на ночь остаются открытыми сеансы, консоли, конфигураторы.
Иногда какие-то длительные обработки.
Локальный кэш любит залипать при подобной очистке на активном конфигураторе.

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

Часто ли встречаются проблемы с сеансовыми данными? Встречаются, но достаточно редко.
2. starik-2005 3309 14.09.23 10:20 Сейчас в теме
(1)
Между тем на ночь остаются открытыми сеансы, консоли, конфигураторы.
Отрубить голову!
Иногда какие-то длительные обработки.
Отрубить вторую голову!
user2107215; headMade; webester; +3 – Ответить
3. webester 26 18.09.23 07:42 Сейчас в теме
(1)
Между тем на ночь остаются открытыми сеансы, консоли, конфигураторы.

Должно работать правило. Если конфигуратор занимает базу после окончания рабочего дня и человека который его занимает нет на месте, конфигуратор может быть убит(если это нужно). Человека можно попробовать спросить, как так вышло, что конфигуратор открыт, а он в нем не работает. Но это не обязательно.
user2046697; +1 – Ответить
4. nvv1970 18.09.23 08:58 Сейчас в теме
(3) ни разу не работал в компаниях где рабочее время как-то ограничено. Но вечерам ночам вполне может идти разработка.
Или например большое обновление может длиться 2-3 суток. А если тесты больше суток идут?

И да, может потребоваться рестарт по разным причинам. И ночью никто никого оповещать не будет.
Но рестарт без причины, просто так, каждые N часов, в контуре разработки...
В рабочей так можно, особенно во время обновления. В контуре разработки, тестирования - нельзя.
5. webester 26 19.09.23 03:52 Сейчас в теме
(4)Не ограничено конечно ничего. Перерабатывай сколько влезет. Хоть круглые сутки. Или может ты пришел позже. Но если ты открыл конфигуратор и ушел домой. Конфигуратор будет убит если он нужен другим людям. Тебя могут спросить, могут не спросить(когда например вы во Владивостоке в 8утра а тот кто занял конфигуратор сладко спит в мск) но если ты ушел, разработку сохрани. А лучше и конфигуратор освободи ну или не обижайся, если сеанс умрет. База твоя конечно, но всякое бывает.).
Для отправки сообщения требуется регистрация/авторизация