Как обновлять конфигурации на поддержке используя команды пакетного режима запуска в среде Windows многие знают. Однако обязательным условием запуска клиента 1С является наличие графического окружения (иксов). Чтобы использовать пакетный режим под CentOS и не устанавливать "окна", можно использовать пакет Xvfb, рекомендуемый 1С (https://its.1c.ru/db/freshpub/content/105/hdoc). Предлагаемый скрипт как раз и использует эту возможность.
Порядок действий скрипта:
- Считывает файлы заданий из каталога
- Проверяет флаг активности задания и существования файла обновлений
- Сравнивает время задачи с текущей датой
- проверяет установку Xvfb и, в случае необходимости устанавливает
- Устанавливает блокировку регламентных задание и сеансов
- Создает резервную копию средствами PostgreSQL
- Обновляет конфигурацию из файла
- Обновляет конфигурацию информационной базы
- Запускает конфигурацию в режиме 1С Предприятия для выполнения процедур обновления
- Снимает блокировку регламентных задание и сеансов
Перед началом работы необходимо установить толстый клиент (для этого я и включил установку толстого клиента в скрипт)
Установка и настройка:
- Сам скрипт записывается в любой каталог. В этот же каталог копируем файл update.epf
- Настраиваем переменные в начале скрипта:
SERVER="192.168.0.10" — адрес кластера
BLOCK_CODE="123" — код для блокировки информационной базы (см. параметр пакетного запуска /UC )
SHEDULE_DIR=/home/files/install — каталог поиска файлов заданий, например "расшаренный" samba
- устанавливает права на запуск chmod +x update_cfg.sh
- чтобы на застрять в vim и не выключать компьютер 🙂 , выполните export EDITOR=nano (или mcedit)
- командой crontab -e добавляем задание запускать каждые 5 минут в cron (указываем полный путь к файлу update_cfg.sh):
*/5 * * * * /root/update_cfg.sh
Теперь каждые 5 минут скрипт будет искать задачи в каталоге SHEDULE_DIR и выполнять необходимые действия (другой вариант запускать один раз, скажем в 23:00)
Файл задания имеет расширение *.upd.1c и следующую структуру:
DB_NAME=zgu |
имя базы в кластере |
DB_USR=Админ |
Логин пользователя с полными правами и отключенным флагом "защита от опасных действий" |
DB_PWD=123 |
Пароль соответственно |
FILE=/home/files/install/1cv8.cf |
Файл обновления *.cfu, *.cf |
BK_DIR=/home/files/install |
Каталог, в который будет записана резервная копия |
NEW_VER=3.1.9.28 |
Номер версии, чисто для отображения в сообщении блокировки |
TIME=2025-04-08 10:01:00 |
Дата и время запуска |
STATUS=OFF |
Статус активности задания ON/OFF |
Разумеется не забываем о безопасности — файлы скрипта, заданий и update.epf не должны быть доступны простым пользователям. Так же запуск скрипта через cron можно сделать от имени пользователя usr1cv8 (crontab -u usr1cv8 -e). Но в этом случае установку и управление службой Xvfb.service следует исключить из тела скрипта и установить запуск про старте системы systemctl enable Xvfb.service.
(1) ok