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

12.09.23

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

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

Скачать исходный код

Наименование Файл Версия Размер
snccntx_reset.tgz
.tgz 0,70Kb
0
.tgz 0,70Kb Скачать

В среде 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

См. также

Жизнь программиста 1С на Линукс, это возможно?

О жизни Linux Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Использование Linux в качестве основной ОС для программиста 1С, возможно ли это? Решил поделиться личным опытом работы перехода на эту систему. В статье моя история без технических деталей максимально простым языком. И, спойлер, да, жизнь на Линуксе для разработчика 1С возможна и с каждым годом становится всё комфортней. Статья рассчитана на людей, с Линуксом не знакомых, специалистов прошу не кидаться помидорами.

16.05.2024    2788    soulner    31    

32

В облако на работу: Все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Точки над Ё

Облачные сервисы, хостинг Linux Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В одном из лучших руководств администраторов "UNIX and Linux System Administration Handbook, © 2018 Pearson Education lnc." описывается такой метод настройки систем: "Копируй, вставляй, молись". Какой бы ни была подробной инструкция и на какой бы типовой системе она ни составлялась, всегда что-то может пойти не так. В этой публикации рассмотрим, как искать и устранять ошибки авторизации ОС сервером 1С на базе linux.

02.05.2024    755    capitan    0    

11

В облако на работу: Все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Рецепты от Капитана

Облачные сервисы, хостинг Linux Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В публикации рассматриваются все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Как случаи, когда сервер 1С авторизирует веб и обычных клиентов 1С в active directory, так и когда сам сервер является клиентом, например при HTTP запросах выполняемых сервером 1С.

18.03.2024    779    capitan    0    

9

Три пингвина под окном… Точки над Ё. Обзор рабочих мест пользователя 1С, собранных на отечественных дистрибутивах linux

Облачные сервисы, хостинг Linux Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Прошлая публикация "Три пингвина под окном… Обзор рабочих мест пользователя 1С, собранных на отечественных дистрибутивах linux" набрала более 20К просмотров. В моем случае это абсолютный рекорд. Как и обещал в ней, рассказываю, как установить неподдерживаемый дистрибутив ОС у облачного провайдера.

25.02.2024    2394    capitan    0    

7

Тестовый кластер 1С на UBUNTU 23.10

Linux Системный администратор Платформа 1С v8.3 Россия Абонемент ($m)

Описан процесс создания простого кластера 1С в связке: отдельный сервер UBUNTU версия 23.10 + сервер 1С версия 8.3.23.1997 + PostgreSQL версия 15. Автор не претендует на новизну решения, но пошаговая упорядоченная инструкция позволяет стандартными методами быстро и просто создать кластер 1С на серверах Linux.

1 стартмани

08.02.2024    1855    janerev1956    7    

19

В облаке, как дома: Устраиваемся поудобнее. Рабочее место пользователя 1С на базе РЕД ОС (HTTPS и архивирование)

Linux Облачные сервисы, хостинг Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

На прошедшем вебинаре "В облаке, как дома: Как настроить рабочее место пользователя 1С на базе РЕД ОС" мы договорились, что продолжением будет установка соединения по HTTPS и архивирование. Это финальные штрихи в настройке рабочего места. Вот и оно (продолжение) или они (штрихи), прошу под кат...

29.01.2024    901    capitan    5    

7

Определение длительности аудиофайла (Linux)

Linux Разное Программист Пользователь Платформа 1С v8.3 Абонемент ($m)

Пример обработки для определения длительности аудиофайла в среде Linux.

1 стартмани

12.01.2024    446    0    ErAK    2    

3

Три пингвина под окном... Обзор рабочих мест пользователя 1С, собранных на отечественных дистрибутивах linux

Linux Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

На прошедшем вебинаре "В облаке, как дома: Как настроить рабочее место пользователя 1С на базе РЕД ОС" мы договорились, что продолжением будет обзор рабочих мест на других отечественных ОС. Вот и оно (продолжение) или он (обзор), прошу под кат...

25.12.2023    2318    capitan    6    

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

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

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

Часто ли встречаются проблемы с сеансовыми данными? Встречаются, но достаточно редко.
2. starik-2005 3046 14.09.23 10:20 Сейчас в теме
(1)
Между тем на ночь остаются открытыми сеансы, консоли, конфигураторы.
Отрубить голову!
Иногда какие-то длительные обработки.
Отрубить вторую голову!
headMade; webester; +2 Ответить
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утра а тот кто занял конфигуратор сладко спит в мск) но если ты ушел, разработку сохрани. А лучше и конфигуратор освободи ну или не обижайся, если сеанс умрет. База твоя конечно, но всякое бывает.).
Оставьте свое сообщение