Служба запуска и остановки автономного сервера 1С
Для работы службы используем юнит systemd
Создадим каталог aspekt, для рабочих скриптов и в нем создаем скрипты
1 |
sudo mkdir /opt/1cv8/aspekt && cd /opt/1cv8/aspekt |
Создадим файл юнита 1C_ibsrv_03.service для базы BUH JRUS порт 8315
1 |
sudo nano 1C_ibsrv_03.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[Unit] Description=Standalone server 1C for base 03_jr_win Requires=network.target [Service] # Запуск сервера и его параметры --address (?) ExecStart=/opt/1cv8/x86_64/8.3.22.2283/ibsrv --daemon --data=/home/test/1c_data/1c/03_jr_win --address 0.0.0.0 --port 8315 Type=forking # Запуск сервиса от пользователя usser (!) User=user Group=user Restart=on-failure RestartSec=1 [Install] DefaultInstance=default WantedBy=multi-user.target |
Создадим файл юнита 1C_ibsrv_04.service для базы BUH JEKO порт 8316
1 |
sudo nano 1C_ibsrv_04.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[Unit] Description=Standalone server 1C for base 04_je_win Requires=network.target [Service] # Запуск сервера и его параметры --address (?) ExecStart=/opt/1cv8/x86_64/8.3.22.2283/ibsrv --daemon --data=/home/test/1c_data/1c/04_je_win --address=0.0.0.0 --port 8316 Type=forking # Сервис стартует от пользователя user (!) User=user Group=user Restart=on-failure RestartSec=1 [Install] DefaultInstance=default WantedBy=multi-user.target |
Делаем символическую ссылку на эти файлы для systemd
1 |
sudo ln -s /opt/1cv8/aspekt/1C_ibsrv_03.service /etc/systemd/system/ |
1 |
sudo ln -s /opt/1cv8/aspekt/1C_ibsrv_04.service /etc/systemd/system/ |
Добавляем запуск сервера в автозагрузку и запускаем
1 |
sudo systemctl daemon-reload |
1 |
sudo systemctl enable 1C_ibsrv_03.service |
1 |
sudo systemctl enable 1C_ibsrv_04.service |
1 |
sudo systemctl start 1C_ibsrv_03.service |
1 |
sudo systemctl start 1C_ibsrv_04.service |
Посмотрим статус
1 |
sudo systemctl status 1C_ibsrv_03.service |
1 |
sudo systemctl status 1C_ibsrv_04.service |
Какие порты «слушает» сервер
1 |
netstat -4plan | grep ibsrv |
1 2 3 4 |
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:8315 0.0.0.0:* LISTEN 4802/ibsrv tcp 0 0 0.0.0.0:8316 0.0.0.0:* LISTEN 4959/ibsrv |
Остановить сервер
1 |
sudo systemctl stop 1C_ibsrv_03.service |
1 |
sudo systemctl stop 1C_ibsrv_04.service |
Резервная копия базы данных
Создадим скрипт
1 |
nano /opt/1cv8/aspekt/1C_baskup.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#!/bin/bash DATE=$(date '+%d-%m-%Y_%H:%M:%S') PATH_1C=/opt/1cv8/x86_64/8.3.22.2283 BASE_1C=/home/test/1c_data/1c BACKUP=/home/test/1c_data/1c # Копия базы BUH JRUS # Проверка работы сервера, код 0 если активен systemctl is-active 1C_ibsrv_03.service if [[ $? -ne 1 ]] ; then echo "Сервер работает, остановливаем, делаем копию базы данных и запускаем" systemctl stop 1C_ibsrv_03.service ${PATH_1C}/ibcmd infobase dump --db-path ${BASE_1C}/03_jr_win/db-data --data=${BASE_1C}/03_jr_win/db-data --user=Администратор "${BACKUP}/jr-03-${DATE}.dt" systemctl start 1C_ibsrv_03.service else echo "Сервер не работает,(не запущен? сломался?) делаем копию базы данных и звоним фиксикам" ${PATH_1C}/ibcmd infobase dump --db-path ${BASE_1C}/03_jr_win/db-data --data=${BASE_1C}/03_jr_win/db-data --user=Администратор "${BACKUP}/jr-03-${DATE}.dt" fi # Копия базы BUH JEKO # Проверка работы сервера, код 0 если активен systemctl is-active 1C_ibsrv_04.service if [[ $? -ne 1 ]] ; then echo "Сервер работает, остановливаем, делаем копию базы данных и запускаем" systemctl stop 1C_ibsrv_04.service ${PATH_1C}/ibcmd infobase dump --db-path ${BASE_1C}/04_je_win/db-data --data=${BASE_1C}/04_je_win/db-data --user=Администратор "${BACKUP}/je-04-${DATE}.dt" systemctl start 1C_ibsrv_04.service else echo "Сервер не работает,(не запущен? сломался?) делаем копию базы данных и звоним фиксикам" ${PATH_1C}/ibcmd infobase dump --db-path ${BASE_1C}/04_je_win/db-data --data=${BASE_1C}/04_je_win/db-data --user=Администратор "${BACKUP}/je-04-${DATE}.dt" fi sleep 3 netstat -4plan | grep ibsrv echo "Удаляем файлы старше 7 дней..." find ${BACKUP} -name "*.dt" -type f -mtime +7 -delete |
Даем файлу атрибут выполнения
1 |
chmod +x ./1C_backup.sh |
Создаем расписание CRON
Переключаемся на пользователя root
1 |
su - |
Делаем чтобы консольный редактор был nano, по умолчанию
1 |
export EDITOR=nano |
Создаем задание для CRON, запускать задание один раз в день в полночь.
1 |
crontab -e |
1 |
@daily /opt/1cv8/aspekt/1C_backup.sh >> /opt/1cv8/aspekt/backup.log |